目的
以前ラズベリーパイ(以下ラズパイ)でPhotoPrismを構成し、自分専用の写真サーバーを立ち上げました。
でもせっかくなら家族や親しい人たちにも便利に使ってほしいので、ユーザーを追加する方法として忘備録を残していきます。
なお、この記事はPhotoPrismを構築済みの人たち向けなので、まだ構成できていない方は以下の記事を参考にしてみてください。
完成イメージ
Googleフォトのように、アカウント毎に専用の写真サーバーを利用できる。
各種構成
機器構成
Raspberry Pi4B 8GB
SSD 128GB(OS用)
HDD 6TB(ストレージ用)
システム構成
Raspberry Pi OS
コンテナ:Docker※導入済み
写真サーバー:PhotoPrizm(フォトプリズム)※導入済み
上記を前提に実施していきます。
構成ロードマップ
①ディレクトリ構造の設計
先日作成したPhotoPrismは管理者アカウントとして作成しました。
今回はインスタンスを別途作成し、そこに別アカウントの作成(マルチインスタンス化)させて、アカウント毎に利用できるようにしていきます。
a)ディレクトリ構造の確認
以下コマンドで現在のディレクトリ構造を確認できます。
ls -R ~/photoprism/
以下のような例で表示されます。
#ユーザーA(既存)のフォルダ
#~/photoprism/originals/
#~/photoprism/storage/
b)新規ユーザー用のフォルダを作成
上記で表示されたディレクトリを参考に、以下のように追加するアカウントを作成していきます。
(今回はuserBとします。)
なお、後ほどコンテナ名をdocker-compose.ymlに記載していきますが、このとき英数字とアンダースコア(_)ドット(.)、ハイフン(-)のみ使用できます。
それらに合わせてアカウント名も合わせていくといいでしょう。
mkdir -p ~/photoprism-userB/originals
mkdir -p ~/photoprism-userB/storage
※注意事項※
ラズパイは個人で利用する分には、安価で性能にも申し分ありませんが、複数人で利用するにはラズパイにはキツくなってきます。
(メモリとCPU稼働率が上がるため)
なので利用するときは極力2つ以上のアカウントで同時にインデックス処理(AI解析)させないようにしましょう。
②ポート番号の割り当て
「userB」という名前で専用の部屋を作ってあげました。
続いてはそのディレクトリにdocker-compose.ymlを作成していきます。
a)ディレクトリ移動
cd ~/photoprism-userB
b)設定ファイルを作成
nano docker-compose.yml
c)docker-compose.ymlの編集
b)で設定ファイルに入ったら、以下を編集しましょう。
version: '3.9'
services:
# サービス名を変更(内部管理用)
photoprism-b:
image: photoprism/photoprism:latest
# コンテナ名を一意にする(英数字、_、.、-が使用可能)
container_name: photoprism-user-b
restart: unless-stopped
security_opt:
- seccomp:unconfined
- apparmor:unconfined
ports:
# 左側がラズパイの外部ポート。今回は2343番に変更します
- "2343:2342"
environment:
PHOTOPRISM_ADMIN_PASSWORD: "user_b_password" # ユーザーB用の初期パスワード
PHOTOPRISM_SITE_URL: "http://[ラズパイのIP]:2343/"
# ラズパイの負荷軽減設定(重要)
PHOTOPRISM_WORKERS: 1
PHOTOPRISM_LOG_LEVEL: "info"
volumes:
# STEP1で作ったユーザーB専用のパスを指定
- "./originals:/photoprism/originals"
- "./storage:/photoprism/storage"
ctlr + O → Enter で保存
ctlr + X 終了
d)インスタンスの起動
以下のコマンドでインスタンスを起動しましょう。
# -d はバックグラウンド実行
docker compose up -d
起動後、以下のコマンドで2つのコンテナが並んで動いているか確認しましょう。
docker ps
いかがでしょう?PhotoPrismと表示されたコンテナが以前作ったものと、今回作ったもので表示されましたか?
表示されたのが確認できたら、以下で確認してみましょう。
URL: http://[ラズパイのIPアドレス]:2343
ログインID:admin
パスワード:docker-compose.ymlで書いたパスワード
あとはTailscaleやPhotoSyncの導入を実施していけば、外出先でも利用できるようになるでしょう!
まとめ
いかがでしょう?
利用できるようになりましたか?
一応Cloudflare Tunnelwoを利用すれば、IPアドレスにドメインを付与することができ、アドレスもhttps(暗号化)することができるので、ルーターのポート開放が不要となり、サイトの見栄えや暗号化通信もできるので安全でしょう。
ただ、独自ドメインを取得する必要があるので、場合によっては有料になるので悪しからず。
ぜひ実践してみて、皆さんの周りの人たちとの「便利」を共有しましょう。