Google Photos容量がいっぱいなのでPhotoprism を立てた
2024年 12月 02日 月曜日
執筆者: Katsusuke Shimizu
Google Photos の容量がいっぱい
- 家族の写真などでGoogle Photos がいっぱい
- 昔は無料だったけど今は有料化して、Google Drive の容量を使うようになった
- 家族の裸体などが結構入っているので、幼児ポルノ画像と認識されて垢BANされるのが不安
デモサイト
https://demo.photoprism.app/library/browse
構成
- Jetson AGV Xavier
- M.2 SSDが搭載されていて、キャッシュなどはここに配置してある
- Raspberry Pi 5 でも動くらしいけど、手元にJetson があったので使っている
- Jetson のストレージは飛ぶという前提で構築してある。死んだらNAS から復旧させる
- NAS はRAID6 6TB
- RAM がたらないのでPhotoprism が搭載できない
- MariaDB はlogrotatedで90日分のバックアップを取るようにしている
/var/photoprism/compose.yml
https://docs.photoprism.app/getting-started/docker-compose/
- Jetson はARM64なので、Raspberry Piのマニュアル通りに設定した。皆さんは自分のアーキテクチャに合わせてください
- 変更したところ
- services.photoprism.ports
- “2342:2342” => “80:2342”
- ポート番号を覚えるのが面倒なため
- “2342:2342” => “80:2342”
- services.photoprism.environment
- PHOTOPRISM_ADMIN_PASSWORD: “insecure” # initial admin password (8-72 characters)
- Photoprism admin のパスワード
- PHOTOPRISM_DATABASE_PASSWORD: “insecure” # MariaDB database user password
- Photoprism のMariaDBデータベースのパスワード
- PHOTOPRISM_ADMIN_PASSWORD: “insecure” # initial admin password (8-72 characters)
- services.photoprism.volumes
- ”~/Pictures:/photoprism/originals” => “/mnt/photoprism/originals:/photoprism/originals”
- 元画像をNASに保存
- ”~/Pictures:/photoprism/originals” => “/mnt/photoprism/originals:/photoprism/originals”
- services.mariadb.environment
- MARIADB_PASSWORD: “insecure”
- Mariadb のデフォルトユーザーphotoprism のパスワード
- MARIADB_ROOT_PASSWORD: “insecure”
- MariaDB のroot パスワード
- MARIADB_PASSWORD: “insecure”
- services.mariadb.ports:
- “3306:3306”
- docker を使わずに mariadbdump したいから
- “3306:3306”
- services.photoprism.ports
/etc/systemd/system/photoprism.service
[Unit]
Description=Photoprism
Requires=docker.service
[Service]
Type=simple
Environment=COMPOSE_FILE=/var/photoprism/compose.yaml
WorkingDirectory=/var/photoprism
ExecStartPre=/usr/bin/docker compose -f ${COMPOSE_FILE} down --volumes
ExecStart=/usr/bin/docker compose -f ${COMPOSE_FILE} up
ExecStop=/usr/bin/docker compose -f ${COMPOSE_FILE} down --volumes
[Install]
WantedBy=multi-user.target
/etc/fstab
あらかじめ cifs-utils を入れる
sudo apt install cifs-utils
nas のマウントはこんな感じ
//NASのIPアドレス/Pictures/photoprism /mnt/photoprism cifs _netdev,credentials=/home/katsusuke/.smbcredentials,uid=katsusuke,gid=katsusuke,x-systemd.automount 0 0
パスワードは~/.smbcredentials に書いてある
/etc/logrotate.d/photoprism
参考: https://zenn.dev/muchoco/articles/d506d1c5c7ec3f
logrotated を使ってmysqldump を毎日実行して、さらに古いものは削除するようにしている
/mnt/photoprism/db/photoprism.sql.gz {
daily
rotate 90
size 0
missingok
nocompress
postrotate
mysqldump -uphotoprism photoprism -h 127.0.0.1 -pパスワード | gzip > /mnt/photoprism/db/photoprism.sql.gz
endscript
}
トラブルシュート
- アップロードした画像が見つからない
- Review に、不要っぽい画像がマークされている 必要なら戻す
便利なところ
- ビッグテックの一存で垢BANされる心配がない
- 地図が連携されて、あの場所で撮った写真みたいな検索ができる
- 若干アホだけど人の顔認識ができる
- NASの容量と電気代と、自分の人件費を無料として考えると、Google Photos に比べて安い
不便なところ
- OCRして、紙を撮影した画像とかが検索できると嬉しい
- シチュエーションを検索しても出てこない(海/ocean みたいな)
課題
- Google Takeoutを使ってGoogle Photos の画像を全部引き上げる
- Blu-ray に焼いていあるデータがそろそろ心配なので、NAS にもバックアップを取る
- NASの容量がたらないのでもっと大容量のNASを買う
- 雑にdocker compose で起動しているので、mariadb やphotoprism のプロセスが個別に死んだ場合、systemd による再起動が効かない
- 外出者機から写真が見たい時に見えない
- Cloudflare Tunnelをつけるか?
- 誰か良い案募集
結論
- 概ね満足
この記事をシェア