先日 α7C を購入したこともあり、以前から課題だった「撮りためた写真をどう管理するか」問題をお盆休みに考えました。
条件としては、家族がそれぞれ撮影した写真を集約しつつ、それぞれのスマホやパソコンからそれらの写真を閲覧できるようにしたい、です。
いろいろ試行錯誤し、Piwigo を使って管理することにしました(使ったのはクラウド版ではなくオンプレ版)。
結果としては、やりたかったことがほぼ実現できそうで、割とイイ感じに持っていけました。
というわけで今回は2回に分けて、Piwigo のセットアップなどについての情報をまとめたいと思います。
前半の今回は、Piwigo を選択した理由や基本的なインストール方法についてです。
写真管理アプリに求める要件をまとめてみる
まずはコレです。
どんな機能を写真管理アプリに求めているかということですが、自分が欲しい機能はこんなところです。
- セルフホスティングできるサーバー型アプリであること
- スマホから写真をアップロードしやすいことも重要
- タグ(ラベル)を複数付与して管理できること
- 自動だとステキだけど手動でも OK
- ジオタグ(場所情報)がついた写真を、地図上で写真を閲覧できること
- ジオタグをつける機能も欲しい
- 撮影日ごとに閲覧できたり、カレンダービューがあること
- 動画も管理できること
- 今のところ動画はそこまで撮ってないけど、今後も見据えて
- ファイルのタイムスタンプではなく、撮影日でソートできること
- ローカルフォルダ構成をそのまま維持できること
それぞれ解説します。
セルフホスティングできるサーバー型アプリであること
今回は自分専用の写真管理ではなく、家族の写真全体を管理することを考えています。
家族も使うので、スタンドアロン型ではなくウェブでアクセスできるアプリであることが重要になってきます。
加えて、スマホでもパシャパシャ写真を撮るので、スマホからアップロードしやすいこともほぼ必須です。スマホの専用のアプリとかがあるとベターですね。
別にクラウドサービスを使ってもいいんですが、自分でセットアップできれば無料ですし、容量も事実上ほぼ無限です。
Google のようにいきなりサービス終了なんてこともないので、今回は自宅サーバーでセルフホスティングします。
タグ(ラベル)を複数付与して管理できること
1つの写真に複数のタグ情報をつけて、あとから検索しやすくするための機能です。
写真管理アプリであればこれは普通はある機能ですね。
ジオタグ(場所情報)がついた写真を、地図上で写真を閲覧できること
写真がたまってくると、「あれこれどこの写真だっけ?」というのが必ず出てきます。
そんな時にジオタグ(GPS)情報があると地図上で写真を確認できるので、「あ、あそこに行った時のヤツね」とすぐに思い出せます。
Google Map や Google Earth 上に写真の一覧を表示できることが理想です。
また、デジカメなどではジオタグを付与できないこともありますし、後からアプリ上でジオタグを付与できる機能も必須です。
撮影日ごとに閲覧できたり、カレンダービューがあること
これは文字通りなのですが、撮影日の時系列で写真を表示できる機能です。
スマホ用の写真アプリだと割と標準的な機能ですかね。
Exif 情報が確認しやすいこと
Exif というのは、撮影したカメラの機種、F 値、シャッタースピード、撮影日などの画像データ以外のメタデータ(付加情報)のことです。
「これ何のカメラで撮ったんだっけ?」とか「この写真すごいキレイに撮れているけど、カメラの設定ってどうしてたんだっけ?」というときに役に立ちます。
写真の閲覧画面で、簡単に Exif 情報が確認できるのが理想です。
動画も管理できること
これも文字通りですね。
写真はコッチで、動画はアッチで・・・となるとさすがに不便なので、動画も一緒に管理できるようにしておきたいです。
ファイルのタイムスタンプではなく、撮影日でソートできること
これができないアプリなんてないでしょと思うのですが、もしこの機能がなければ激しく不便なので、一応確認項目として挙げています。
既存のフォルダ構成をそのまま維持できること
特に古くから写真を管理されている方は、写真管理用に伝統的なフォルダ構成をお持ちだと思います。
できることなら新しい写真管理アプリでもその構成をそのまま活かしたいところです。
候補に挙がった写真管理ソフトウェアは?
少しググって候補に挙がったものは以下の4つでした。
あまり厳密な比較はしていないのですが、
- Lychee よりは Piwigo が良い(という記事をいくつか見かけた)
- LibrePhotos は少し調べた限りだと情報量が少し少なそう(な気がした)
- Nextcloud は写真管理機能が弱かった(これは実際に試した)
というくらいの緩い理由で今回は Piwigo を試してみることにしました。
Piwigo だと実際どんな感じになるの?
実際に試してみましたが、結論としてはほぼ対応しています。
先ほど挙げた要件ベースで説明してみると、次のようになります(Piwigo のバージョンは 11.5.0)。
セルフホスティング
これはそういうアプリを選んでいるので問題ありません。
ブラウザでアクセスして閲覧・管理できます。
また、一応 iPhone, Android 用のアプリもあります。ショボいですけど。(´・ω・`)
iPhone は使ってないのでわかりませんが、Android であれば Piwigo NG の方が良いです。
タグ(ラベル)
可能です。
まだ登録しているタグの数が少ないですが、こんな感じでタグ一覧を表示して、関連するタグの写真だけを閲覧することができます。
タグ名の変更や、指定したタグの写真に対して一括で処理(削除やアルバムの移動など)もできます。
ジオタグ(場所情報)
プラグインを入れる必要がありますが可能です。こんな感じです。
これは OpenStreetMap のプラグインですが、GoogleMap での表示も可能です(ただし API キーの取得などが必要なため設定がメンドウですが)。
ジオタグを付与することも可能です(ちょっと制約アリ、これについては次回)。
撮影日・カレンダービュー
いろんなパターンで表示可能です。
Exif 情報の確認
こちらもできます。
表示画面は各テーマによって異なるのですが、問題なく表示できます。
コンフィグファイルをいじる必要があってちょっとメンドウなのですが、Exif パラメータごとに表示・非表示をカスタマイズすることも可能です。
動画の管理
設定にかなり苦労しましたが、結果としてはプラグインで対応可能です。
しょぼいスペックの CPU(Celeron J4105 1.5GHz) のサーバーでも 4K 60fps 動画を再生可能で、再生中もサーバー側にほとんど負荷はかかっていません。Quick Sync Video とか対応してるのかな?
多少時間はかかりますが、動画のアップロード時にサムネイル画(ポスター)の自動生成もやってくれます。
動画の Exif を表示できるのも good です。
撮影日でのソート表示
写真名(ファイル名ではない)、作成日、掲載日(Piwigo にアップロードした日)、閲覧数順などでソートできます。
個人的にはこれだけあれば十分ですね。
既存のフォルダ構成への対応
結論としては、できます。
指定したローカルフォルダ以下のフォルダをアルバム、さらにその下のフォルダをサブアルバムとして登録することができます。
フォルダ内に写真を追加して「同期」を実行すると、Piwigo 上にも反映されます。
ローカルフォルダとして見えていれば良いだけなので、例えば別ファイルサーバーで管理されているリモートフォルダを nfs や smb マウントしても使うといったことも可能でしょう。
ただし、この方法で追加したアルバムに対して写真を追加するときは、必ず手動でフォルダに写真を追加して同期実行する必要があります。
ローカルフォルダから同期されたアルバムに対して Piwigo 上の UI で写真を追加しても、そのフォルダに写真ファイルは配置されません。
例えば、上の図にも「写真を追加する」があります。
ここから写真を追加すると、Piwigo 上のアルバムには登録されますが、同期している galleries/test フォルダに写真ファイルは配置されないということになります。
このあたりが飲めれば、快適に使えるんじゃないかと思います。
ただ個人的には、これを機会にフォルダ管理はほぼやめることにしました。
「でもその場合、将来的に Piwigo から移行する場合不便になるんじゃない?」とも考えましたが、アルバム単位でファイルを zip でダウンロードするプラグインがあります。
若干の手間はかかると思いますが、もし今後 Piwigo から移行したいとなったら、この機能を使ってフォルダ(アルバム)単位でダウンロードしてくれば対応はできそうです。
インストール
さて、気になる要件を確認してきましたが、いかがでしょう。
わりと使えそうな感じのイメージをお持ちになれたのなら、ここからインストールしていきましょう。
環境
今回は諸事情により FreeBSD ではなく Ubuntu です。
- OS: Ubuntu 18.04.5
- MotherBoard: ASRock J4105-ITX
- Memory: 4GB
ちなみにストレージは SSD ではなく 3.5 の SATA HDD です。
Docker でセットアップ
Ubuntu (Linux)でやるんだったら Docker を使わない手はありません。
ありえなくいらいに超お手軽です。
今回は、dockerhub で「piwigo」で検索して一番上に出てきた linuxserver のイメージを使用させていただきます。
こんな感じの docker-compose.yml を書いて docker-compose up -d
で起動すれば完了です。
version: "2.1"
services:
mariadb:
image: mariadb:latest
volumes:
- /SOMEWHERE/piwigo/mysql/:/var/lib/mysql
container_name: piwigo_db
environment:
- MYSQL_ROOT_PASSWORD=your_password
- MYSQL_DATABASE=piwigo
- MYSQL_USER=piwigo
- MYSQL_PASSWORD=your_password
piwigo:
image: ghcr.io/linuxserver/piwigo
container_name: piwigo
links:
- mariadb:mariadb
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Tokyo
volumes:
- /SOMEWHERE/piwigo/config:/config
- /SOMEWHERE/piwigo/gallery:/gallery
- /SOMEWHERE/piwigo/uploaded:/gallery/upload
- /SOMEWHERE/piwigo/galleries:/gallery/galleries
ports:
- 10080:80
- 10443:443
restart: unless-stopped
少し補足します。
/SOMEWHERE/piwigo/mysql/:/var/lib/mysql
これは MariaDB のバックアップ用です。動かすだけなら bind mount する必要はありません。
/SOMEWHERE/piwigo/config:/config
Piwigo のコンフィグファイル置き場・・・ですが、あまり使いません。実質的には下記の gallery にほとんどあります。
SSL の証明書などはココに置きます。
/SOMEWHERE/piwigo/gallery:/gallery
Piwigo のルート的な場所。
Exif の表示パラメータなどの設定をするコンフィグファイルは、このフォルダ以下、 ./local/config/config.inc.php
にあります。
/SOMEWHERE/piwigo/uploaded:/gallery/upload
Piwigo の UI で写真を追加したときにファイルの実体が配置されるルートパスがココです。
この中に、アップロードされた日付のサブフォルダが自動生成され、その中にファイルが配置されます。
直接見えたほうがベンリなこともあると思うので、ホスト環境から見えるように外に出しています。
/SOMEWHERE/piwigo/galleries:/gallery/galleries
アルバムを実フォルダ管理したい場合に置く場所のルートパスです。
例えばホスト側に mount されたパス(/SOMEWHERE/piwigo/galleries
)をさらに samba で見せるなどすれば、Windows のエクスプローラーで写真ファイルをコピー、その後 Piwigo 上で「同期」を実行することでアルバムに登録することもできます。
初期設定
ブラウザで https://サーバーのアドレス:10443 にアクセスすると、以下のインストール画面が表示されます。
データベース設定は以下の通り設定します。
ホスト | MariaDB のコンテナ名 |
ユーザー | MYSQL_USER |
パスワード | MYSQL_PASSWORD |
データベース名 | MYSQL_DATABASE |
管理設定は適切に設定しましょう。ちなみにメールアドレスは必須のようです。
「インストールを開始する」をクリックすると、わりとすぐにインストールは完了します。
最初は写真が入っていないので何も入っていませんと言われますが気にせず「写真を追加したい」をクリックすると、管理画面へ行けます。
これで基本的なインストールは完了です。
次回はカスタマイズ方法について書く予定です。
コメント
まさに求めていた写真管理システムそのものです。
参考にさせて頂きます。