【趣味の話】自分専用クラウド基盤を本気で見直した話 〜ファイルサーバーのみから写真サーバーを追加構築〜
もともと、私はNextcloudをnginx単体で自宅サーバーに建て、写真や資料ファイルを管理していました。
しかし、長年使ってきた中で、特に写真検索性能に限界を感じるようになりました。
大量の写真データ(約3万枚)を保存していると、単純なファイルブラウザ型のNextcloudだけでは
サムネイル表示が重い
メタデータ検索が弱い
スマホで直感的に探しにくい という課題が無視できなくなってきたのです。
今回、目指したもの
ファイル管理機能はNextcloudに残す
写真ブラウジング・検索はPhotoPrismに任せる
データの重複保存は避け、ストレージ効率も意識する
外出先からも快適にアクセスできるよう、セキュアな構成を作る
新アーキテクチャ
構成はこうしました。
Internet
↓
[ VPS (WireGuardサーバー) ]
↓ (WireGuardトンネル)
[ 自宅サーバー (WireGuardクライアント) ]
├── Traefik (リバースプロキシ / SSLターミネーション)
├── Nextcloud(+Redis+MariaDB)
├── PhotoPrism(+MariaDB)外部公開ドメイン (例: hogehoge.com) はVPSのIPに向け、そこからWireGuardトンネルで自宅サーバーへルーティング
TraefikがLet's Encryptで自動的に証明書を管理
Nextcloud (例: nextcloud.hogehoge.com)とPhotoPrism (例: photoprism.hogehoge.com)はDocker Composeで独立運用
NextcloudはRedisキャッシュを導入し、高速化
PhotoPrismはNextcloudストレージをマウント参照し、データ複製なしで連携
自動Rescanコンテナで、スマホからアップロードされた写真もすぐPhotoPrismに反映
設計ポイント
NAT超えとセキュリティ
通常、自宅サーバーを直接インターネット公開するのはリスクが大きい。(というかNATが挟まっていて固定IPがないためサーバーを立てれない)
→ そこでVPS中継+WireGuardトンネルで安全にNAT越え。ストレージ一元管理
Nextcloudの /files 内にMobile Photos(スマホ写真)
Camera Photos(一眼レフ写真)
Processed Photos(現像済み写真)
をそれぞれ作成。PhotoPrismはこれらを参照するだけにした。
Rescanの自動化
専用コンテナを用意し、PhotoPrismのphotoprism indexコマンドを5分間隔で実行。
これにより、新しい写真もほぼリアルタイムで検索可能に。
苦労した点
WireGuard+Traefik+Docker Composeをすべて噛み合わせる設定調整
NextcloudのHTTPSリダイレクト強制など細かいチューニング
PhotoPrismのRescan設計(最初は時間がかかるので細かい最適化をした)
最後に
個人環境とはいえ、「ちゃんと設計して作ると、ここまで快適になるんだ」と改めて実感しました。
Docker Composeでまとめたので、サーバーの移設も比較的楽にできそうです。
P.S.
生成AIすごすぎません???
革命的に生産性が上がっています。このnoteも5分で作れちゃいました。
これから思ったことや考えたことはnoteに書いていきます!
ではまた!
「♡」は、誰でも(noteにアカウントを作っていない方でも!)押すことができます。この投稿を「いいな」と思った方は、気軽に押してみてください。
TwitterとFacebookによくいます。Instagramも始めました。ストーリー楽しい
デジタル名刺に各種載っています
https://lit.link/fukudomehideki


コメント