軽量Linuxの代表、Alpine Linux でNASを自作して使っているのだが、Google Photo の代替的写真サーバー機能を加えようと思った。今までもスマホからuploadしてきたが、どうせならタイムラインとかがあったら素晴らしい。とりあえす Nextcloud 上のアプリである Memories を使おうとしたのだが、AIに「Memories はアップロード時に日付で自動的にフォルダを整理する機能はありません」と言われてしまった。
本家 Nextcloud モバイルアプリの自動アップロード機能には、サーバーのInstantUploadフォルダに日付で階層化して保存する機能があるのだが、スマホの Memories アプリからのアップロードはそれができない。2つアプリをインストールするのも何だかなぁ。。。
Google Photo 類似のアプリでいいのがないかと探すと immich と Photoprism が見つかった。スマホアプリの出来栄えは immich のほうがいいようだ。妻子にはこちらが使いやすそうに思える。
ということで、Alpine NAS に Immich を入れることにした。immichのドキュメントをみると、dockerで動かすようだ。
sudo apk update
sudo apk add docker docker-compose
sudo rc-service docker start
sudo rc-update add docker boot
で、docker を動かした。
うちの AlpineNAS は USB memory にOSを入れて、HDD2台でミラーされた zfs ストレージにデータファイルを保存している。Samba や Nginx などのアプリケーション本体は USB に保存されているのだが、docker は大きすぎて /var/lib/docker に入り切らない。
そこで、docker のルートフォルダともいえる /var/lib/docker をHDDストレージ上に移動させることを考えた。/opt/tank の下に /opt/tank/lib/docker を作って
/etc/docker/daemon.json に、{
"data-root": "/opt/tank/lib/docker/"
}
を書いて移動させた。ドキュメントに従って、/opt/tank/docker-data 下に immich-app フォルダを作って移動(cd)し、wget でdocker-compose.yml と .env ファイルをgetして、```docker compose up -d``` で docker container を作って走らせた。http://alpinenas.local:2283/ でアクセスすると無事 immich の設定画面が出てきて、ユーザーを登録して写真をアップロードすることができた。スマホのアプリも秀逸だ!
URLが、http://xxxx:2283/ なのが気に入らない。nginx にリバースプロキシさせて、サブドメイン作って、https://immich.myhome.lan/ でアクセスできるようにした。めでたしめでたし!
