自宅のNAS環境(OpenMediaVault)において、tailscail、n8n導入に続き、写真管理アプリの導入を試みた際の記録です。
背景
今回の目的は、スマートフォンの写真をNASへ自動バックアップし、Googleフォトに保存している写真を整理することで、Googleストレージの使用量を減らすことでした。
私はGalaxyスマートフォンを利用しており、写真編集や画像生成についてはGalaxy AIやChatGPT、Geminiなどを活用しています。そのため、写真管理アプリに高度な編集機能やAI機能を求めていたわけではありません。
また、GoogleフォトのAI検索機能も話題になることが多いですが、個人的には「○○の写真を探したい」と思った際、結局は撮影時期やイベントの日付を頼りに探すことがほとんどでした。
そのため今回重視していたのは、
-
スマホ写真の自動バックアップ
-
NAS上での安全な保管
-
外出先からの閲覧
-
Googleストレージ容量の解放
という実用的な部分でした。
Immich導入の過程と課題
当初は、最近非常に評価の高いImmichの導入を検討しました。
ImmichはGoogleフォトの代替として人気が高く、
-
顔認識
-
AI検索
-
地図表示
-
モバイルアプリ連携
など、多くの魅力的な機能を備えています。
一方で、私のNASは実家で不要になったパソコンと余っていたHDDを活用して構築したもので、メモリは4GBしか搭載していません。
Immichを動かすためには、サーバー本体だけでなく、PostgreSQLやRedisなど複数のDockerコンテナを連携させる必要があります。
3時間の格闘
子どもが寝た後、導入作業に取りかかりました。
設定ファイルを見直し、エラーログを確認し、再起動を繰り返しながら原因を探りました。しかし、気が付けば3時間近く同じような作業を繰り返していました。
その過程で、
-
メモリ不足によると思われるエラー
-
Dockerイメージと環境の相性問題
-
D-Bus関連の認証エラー
-
コンテナ起動時の各種トラブル
など、複数の問題に直面しました。
もちろん解決できない問題ではなかったのかもしれません。しかし、その時ふと立ち止まって考えました。
「自分は何のためにこれをやっているのだろう」と。
決断のきっかけ
ここまで、OpenMediaVaultへの移行を進めながら、Tailscaleやn8nの導入には成功してきました。
その流れの中で、当初の計画だったImmichの導入だけは断念することになりました。
正直なところ、少し悔しさはありました。ここまで順調に環境構築が進んでいたため、「あと一歩で完成するはず」と考えていたからです。
しかし、改めて考えてみると、私の本来の目的は「Immichを導入すること」ではありませんでした。
目的は、
「スマートフォンの写真をクラウドだけに依存せず、自宅NASへ自動バックアップすること」
です。
また、現在利用している環境は、実家で不要になっていた古いパソコンを再利用して構築したものです。メモリは4GBしかなく、CPU性能も決して高くありません。
さらに、OpenMediaVaultの環境やDocker上での運用を考えると、仮に今回のエラーを解決できたとしても、Immichを快適に動かし続けることは難しかった可能性があります。
実際に、他の方がメモリ4GB環境でImmichを導入している動画も視聴しました。
その方は機械学習機能を無効化した状態で運用していましたが、それでも全体的な動作はかなり重く、快適とは言い難い印象でした。
そこでようやく踏ん切りがつきました。
「Immichを動かすこと」が目的になってしまっていたのです。
限られたリソースの中で無理に最新機能を追いかけるよりも、自分の環境で安定して運用できる方法を選ぶ方が合理的だと考えました。
そうして、PhotoPrismへの切り替えを決断しました。
PhotoPrismへの切り替え
そこで、より軽量でシンプルな運用ができそうなPhotoPrismへ切り替えることにしました。
運用の安定性
リソース消費が比較的穏やかで、4GBメモリ環境でも安定して動作しています。
構成がシンプル
Immichと比較するとコンテナ構成が分かりやすく、セットアップや保守の負担も少なく感じました。
必要十分な機能
私の場合、写真を探す際はAI検索よりも撮影日ベースで探すことがほとんどです。
そのため、
-
写真が保存できる
-
日付ごとに閲覧できる
-
スマホからバックアップできる
という機能があれば十分でした。
PhotoPrismへの切り替えと、残ったエラー
もっとも、PhotoPrismへ切り替えたからといって、すべてが順調だったわけではありません。
コンテナ起動直後から、
pthread_create failed: Operation not permitted
というエラーが繰り返し表示され、プロセスが停止してしまいました。
Immichで数時間格闘した直後だったこともあり、「まだ続くのか……」というのが正直な感想でした。
ログを確認しながら原因を探ったところ、OpenMediaVault環境における権限やコンテナ実行時の制限が関係している可能性が考えられました。
特権モード(Privileged)による解決
最終的には、Dockerコンテナに –privileged フラグを付与することで起動に成功しました。
設定後、ログには
server: listening on 0.0.0.0:2342
と表示され、ブラウザから正常にアクセスできることを確認できました。
数時間にわたる試行錯誤の末、ようやく写真管理環境が動き始めた瞬間でした。
学び
今回は、個人NASという限られたリソース環境で最新のサービスを運用する難しさを経験しました。
技術的な挑戦は楽しいものです。しかし同時に、自分の環境や目的に合った選択をすることも重要だと改めて感じました。
Immichは非常に魅力的なソフトウェアだと思います。もし将来的にメモリ8GB以上の環境へ移行したら、再挑戦するかもしれません。
ただ現時点では、
「スマホ写真を安全にバックアップし、Googleストレージ容量を解放する」
という本来の目的を考えると、PhotoPrismの方が自分の環境には適していました。
今回の試行錯誤で得た知識は、今後別のサービスを運用する際にも役立つはずです。
そして現在、PhotoPrismは正常に動作しています。
ただし、そのPhotoPrismが入っているディレクトリ名は「immich」のままです。
本来であれば名前も整理した方が良いのでしょう。しかし、子どもが寝た後の貴重な時間を使い、数時間にわたってエラーと格闘した後では、そこまで気力は残っていませんでした。
中身はPhotoPrism、ディレクトリ名はImmich。
少々ちぐはぐではありますが、問題なく動作しているので、ひとまずこのまま運用することにします。
完璧な環境構築よりも、目的だった「スマホ写真のバックアップ」が実現できたことを優先したいと思います。


コメント