Google Photoの代替を探す

Google Photoが有料化されて以降、何か違う手段はないものかと考えている。

15GBって少ないし、スマホで撮った写真やちょっとした動画ですぐ埋まってしまう。画質をオリジナルで保存できないのもなんか残念だ。かといって容量追加をGoogle Oneで申請すると微妙に出費になってしまう。払えなくもないものの、それでも100GBを気にしないといけないし、そもそも自宅には1TBとか2TBのハードディスクが空いている。

せっかくUbuntuの自宅サーバを運営しているのだから、何かできることがあるはずと思い、調べたり実験したりしてみた。

要件を考え直してみる

どういう生活が幸せかを整理。

必須

  • スマホ、デジカメなどで撮影した写真やビデオを永続的に保存。オリジナル画質。
  • スマホでどこからでもブラウズができる。
  • 容量を気にしたくない (この点でGoogle Photoがノックアウト)。
  • 今ある資源で。サーバ買い足すなどの投資はしたくない。

できれば外したくない

  • スマホからWi-Fi経由で自動アップロード ⇒ できればいいけど、時々手動でPCから上げるでもいい
  • アルバム機能で友達に共有、友達からもアップロードを受け付ける ⇒ できればいいけど、最悪このシチュエーションだけGoogle Photoを使えばいい
  • 上記同様で、公開Linkの発行
  • スマホでの動画のストリーミング再生 ⇒ できてほしい・・・けど写真ほど優先しない

あきらめられる機能

  • 顔認識 ⇒ 便利だけどなくても死なない
  • 画像認識とキーワード検索 ⇒ Googleだと「ハイキング」とか検索するとそういうのが出るけど、めちゃくちゃお世話になるわけではない。
  • 軽快なパフォーマンス ⇒ Google Photoのサクサク動作は多分無理なので、最低限使えればいい。サムネはさらさらーっと流せて見えたらうれしいけど。

手元にある資源

自宅サーバ

昔使ってたノートPCにUbuntuをGUIなしで入れてサーバにしているもの。Thinkpad Z61t、Core 2 Duo T5500、メモリ1GB、PHP7.4をFPMで設定してあり、MySQLなんかも動いていてブログも動作中。家庭内のSMBサーバとしても。CPUは普段はがら空き。HDDは600GB積んでて500GBくらい空いている。

どんなに軽いLinuxを入れてもノートPCとしては全く使い物にならなかったので、天寿を全うするまでの最後の仕事は自宅サーバということになっていただいた。これでもamazonのEC2でmicroかなにか最小のインスタンスタイプで借りていた時に比べるとパフォーマンスはよいのである。月の電気代は以前測ったら200~300円くらいだった。

ここにSelf-Hosted型の何かをいれて要件が満たせればいいのではと考える。

自宅の作業用PC

普段から、家族が仕事や趣味で使用するPCが約3台。Windows 10。ここからスマホやデジカメの写真をSMBやWeb経由でアップできれば良い。今までのデジカメなどの写真データがかき集めると200GBほどあり、Google Photoの無料枠からはみ出たものはHDDの中においてあって参照などは特にできない。

スマートフォン(家族4人分)、デジカメ

すでに一家で一人一台ですべてAndroid。デジカメはSDカード経由でのアップロードとなる。

NextCloudを試した

インストールは成功。
PHP7.4のFPMにいくつか追加パッケージをインストールしたが、あとはもうWordpress入れるのと似たような手順でMySQLにDBとユーザ切って設定したら動き出した。写真管理というよりはクラウドグループウェアのオープンソース版という感じでチャットとかも付属。

スマホにアプリも導入でき、スマホ内のCameraフォルダを同期させることもできてしばらく待ってみるも、飛んでもなく時間がかかり一晩たってもエラーでまくりで止まっていた。サーバマシンのCPUは常にphp-fpmのプロセスがCPU100%で、こりゃ多分サムネ生成でGDとかが働いてるんだろうけどさっぱりダメだな・・・。ものすごいマシン持ってこないとまともに使えない気がする。

画面遷移も遅い、スマホアプリも応答待ちが長いためか不安定、写真データもぽろぽろアップロードしているけどエラーも出るし何が行ってて何が行ってないか不安満点。

さすがにこんなに重いのもおかしいのではと、opcache、acpとかmemcached入れたりPHPのメモリ制限開放したりチューニングにも励んでみたけどダメなのであった。NextCloudはこれはこれで何かに使える気もしなくはないけど、求めていた写真管理の件に関してはあきらめる。こんな非力なマシンで動くものではないんだろうな、きっと。

ここまで来てGoogle Photoに対する見方も少し変わった。そうか、あれは単にディスク容量を買うだけだと無駄に高い感じしかしないけど、アップロード機能、ブラウズ機能、いろいろなコンピューティングリソースもソフトウェアも全部コミコミなんやから、そらそうよね。ごめんなさい。でもまだあきらめませんが。

次の一手

ちょっと寄り道して、Slackの代替もセルフホストできるようなのあるのかしら?とか調べてたらMattermostなどいろいろあるよう。へー。でもこれもSlackで別にいいよな。Slackも無料版は5GBという容量制限があるが。

LibrePhotosか、Photoprismというのが使えそうな気がしたけど、もう一つPiwigoというのがよさそうに見える。

https://qiita.com/fujiisoup/items/52a69fdd60b6155f1420

スマホから自動で写真同期は、NextCloudであの不安定感だったからもうあきらめて、定期的にスマホをPCにつないでアップロードするくらいの手間は取ってやるとして、SMB経由でサーバにファイルおいてあげれば、ブラウズ機能だけはフロントで提供するみたいな考え方なんだろうか。MySQLとPHP7.4で動くらしいので手っ取り早そう。
ここをザーッとみる限りアップロードの手間以外はほしいやつっぽい。

パフォーマンスがどうかやな・・・CPU空いてるときにちまちまサムネイルとか生成して、サクサク見せてくれる仕組みならよいのだけども、とりあえず今からこれ入れてみる。

Piwigo導入

Apacheのドキュメントルートにダウンロードして展開。

$ cd /var/www/html/
$ wget https://piwigo.org/download/dlcounter.php?code=latest
$ mv dlcounter.php\?code\=latest ./piwigo.zip
$ unzip ./piwigo.zip

おー、わかりやすい・・・昔ながらのWebアプリのインストールだ。

SMBでgalleriesというフォルダに大量の写真を転送したらそれを見せてくれるところまでの動きは非常に良い感じ。ただUIがちょっと微妙かな・・・写真がなんかスマホの画面だと画面中央に大人しめにしか表示されない。そしてサムネイル生成に途方もない時間がかかるのはNextCloudのときと同じだった。夜中にバッチでやらせるにしてもサーバにしているノートPCが火を噴きそうだし毎回これもやってられんかもなあ。

Piwigoのスマホアプリも試してみたけど、そもそもサーバ側が重いので今のところ実用には耐えられないものの、サムネ生成が済んでいるアルバムを参照するのにはそれほど困らないので使い勝手自体は悪くない。

旅は続く・・・

結局今回は完全に落ち着く先は決まらなかった。

そもそもセルフホストするハードウェアがこれだとどの選択肢もどん詰まり。こうなったら、息子があまり使わなくなっているデスクトップPC(ryzen 7 2700x)をサーバ化してしまうか。それとも写真を眺めたり管理するのもいつもってわけじゃないからAWSのオンデマンドインスタンスでも借りて、使うときだけ起動する形式にしようかな。でもそれだと、スマホとかデジカメの写真をアップロードするのに待ち時間長くなりそうだな。

ここを見てるとPhotoPrism+NextCloudが用途も広くてよさそうだし、前述のうちで一番性能がいいPCを常時起動にして、Hyper-Vでサーバ立ててみようか、それともSSD買い足していったんネイティブLinuxマシンにしてしまおうか。でもデュアルブートにしないとWindows 10のライセンスどっか行っちゃったら面倒だな・・。

Leave a Comment

Your email address will not be published. Required fields are marked *