メインコンテンツにスキップ

外部ライブラリ

外部ライブラリは、Immich外のファイルシステムに保存されたアセットを追跡します。外部ライブラリをスキャンすると、Immichはデスク上のビデオや写真を読み込み、対応するアセットを作成します。これらのアセットはメインタイムラインに表示され、他のアセット(地図上での閲覧、アルバムへの追加など)と同様に見え、動作します。その後、ファイルがImmich外で変更された場合は、変更を反映するためにライブラリをスキャンする必要があります。

外部アセットがディスクから削除された場合、Immichは再スキャン時にそれをゴミ箱に移動します。アセットを復元するには、元のファイルを復元する必要があります。30日後にファイルはゴミ箱から削除され、Immich内でのメタデータの変更は失われます。

ノート

外部アセットにメタデータを追加(アルバムに追加したり、説明を編集したり)する場合、そのメタデータはImmich内にのみ保存され、外部アセットファイルには保存されません。また、アセットをライブラリ内の別の場所に移動すると、再スキャン時にそのようなメタデータはすべて失われます。これは、移動後アセットが新しいアセットと見なされるためです。この問題は既知であり、将来のリリースで修正される予定です。

ノート

強力なキャッシングのため、リフレッシュされたアセットがウェブビューに正確に表示されるまでに時間がかかることがあります。変化を確認するには、ブラウザのキャッシュをクリアする必要があります。この問題は既知であり、将来のリリースで修正される予定です。Chromeでは、F12で開発者コンソールを開き、F5でページをリロードし、リロードボタンを右クリックして「キャッシュを空にしてハードリロード」を選択します。

インポートパス

外部ライブラリはインポートパスを使用してスキャンするファイルを判断します。各ライブラリには複数のインポートパスを設定でき、異なる場所からのファイルを同じライブラリに追加できます。インポートパスは再帰的にスキャンされ、ファイルが複数のインポートパスにある場合でも、一度だけ追加されます。各インポートファイルはファイルシステムに存在する読み取り可能なディレクトリである必要があります。インポートパスダイアログは、アクセスできないパスについて警告します。

インポートパスが編集され、外部ファイルがどのインポートパスにも含まれなくなった場合、削除されたファイルと同様にライブラリから削除されます。ファイルを再びインポートパスに移動すると、新しいファイルとして再び追加されます。

トラブルシューティング

場合によっては、外部ライブラリが正しくスキャンされないことがあります。これは、Immichがファイルにアクセスできない場合に発生する可能性があります。以下を確認してください:

  • docker-composeファイルでボリュームが正しくマウントされていますか?
  • ボリュームはワーカーコンテナにもマウントされていますか?
  • インポートパスが正しく設定され、それがdocker-composeファイルで設定されたパスと一致していますか?
  • インポートライブラリでシンボリックリンクを使用していないこと、またDockerマウントをまたぐリンクをしていないことを確認してください。
  • 権限が正しく設定されていますか?
  • バックスラッシュではなく、スラッシュ(/)を使用していることを確認してください。

Immichが外部ライブラリにアクセスできることを検証するには、コンテナ内でシェルを起動します。docker exec -it immich_server bashを実行してbashシェルを取得します。インポートパスが/data/import/photosである場合、ls /data/import/photosを実行して確認してください。同じチェックをマイクロサービスコンテナでも行ってください。

除外パターン

デフォルトでは、インポートパス内のすべてのファイルがライブラリに追加されます。ただし、追加したくないファイルがある場合は、除外パターンを使用してそれらを除外できます。除外パターンは、ファイルパス全体に対して一致するグロブパターンです。ファイルが除外パターンに一致する場合、そのファイルはライブラリに追加されません。除外パターンは各ライブラリのスキャン設定ページで追加できます。

基本的な例:

  • **/*.tifは拡張子が.tifのすべてのファイルを除外します。
  • **/hidden.jpgは名前がhidden.jpgのすべてのファイルを除外します。
  • **/Raw/**Rawという名前のディレクトリ内のすべてのファイルを除外します。
  • **/*.{tif,jpg}は拡張子が.tifまたは.jpgのすべてのファイルを除外します。

@などの特殊文字は、以下のようにエスケープする必要があります:

  • **/\@eaDir/**@eaDirという名前のディレクトリ内のすべてのファイルを除外します。
情報

内部的に、Immichはglobパッケージを使用して除外パターンを処理し、場合によってはそのパターンをPostgresのLIKEパターンに変換します。基本的なフォルダ除外をサポートすることを意図していますが、Postgresの構文に確実に変換できないため、高度な使用はお勧めしません。globドキュメントを参照して、グロブパターンの基本を理解してください。

自動ウォッチング(実験機能)

この機能は実験的なもので、高度なユーザー専用とされています。有効にすると、ファイルシステムの自動ウォッチングが可能になり、新しいアセットが再スキャンなしで自動的にImmichにインポートされます。

写真がネットワークドライブに保存されている場合、自動ファイルウォッチングは機能しない可能性があります。その場合、定期的なライブラリのリフレッシュに頼って変更を取得する必要があります。

トラブルシューティング

もしもENOSPCエラーが発生した場合、ファイルウォッチャーの制限を増やす必要があります。sysctlでは、このキーはfs.inotify.max_user_watchesと呼ばれ、デフォルト値は8192です。この数字を監視するファイル数以上の適切な値に増やしてください。なお、Immichはインポートパス内の無視されたファイルを含め、すべてのファイルを監視する必要があります。

ERROR [LibraryService] Library watcher for library c69faf55-f96d-4aa0-b83b-2d80cbc27d98 encountered error: Error: ENOSPC: System limit for number of file watchers reached, watch '/media/photo.jpg'

稀に、ライブラリウォッチャーがハングして、Immichの起動を妨げることがあります。この場合、設定ファイルでライブラリウォッチャーを無効化してください。ウォッチャーがImmich内から有効になっている場合、マイクロサービスなしでアプリを起動する必要があります。docker composeファイルでマイクロサービスを無効化し、Immichを起動して管理設定でライブラリウォッチャーを無効化し、Immichを閉じてからマイクロサービスを再有効化し、その後に通常通り起動できます。

夜間ジョブ

1日に1回実行される自動スキャンジョブがあります。このジョブは、削除中に停止したライブラリのクリーンアップも行います。ライブラリ管理ページで「すべてのライブラリをスキャン」をクリックすることでクリーンアップをトリガーできます。

使用方法

既存のギャラリーをImmichに追加する具体的な例を示します。以下のフォルダを追加したいとします:

  • /home/user/old-pics: 子供時代の写真が入ったフォルダ。
  • /mnt/nas/christmas-trip: クリスマス旅行の写真。サブフォルダー/mnt/nas/christmas-trip/RawにはDSLRからのRAWファイルが含まれていますが、RAWファイルはImmichにインポートしたくありません。
  • /mnt/media/videos: 同じクリスマス旅行のビデオ。

まず、ライブラリをどのように整理するか計画する必要があります。クリスマス旅行の写真はRAWファイルを除外したいので独自のライブラリに属するべきです。ビデオと古い写真はすべてのファイルをインポートしたいので、同じライブラリにしても構いません。他のフォルダーにRAWの除外パターンに合致するファイルがない場合、すべてのフォルダーを同じライブラリに追加することも可能です。

Dockerボリュームをマウント

immich-serverコンテナはギャラリーにアクセスする必要があります。docker composeファイルを次のように変更します。

docker-compose.yml
  immich-server:
volumes:
- ${UPLOAD_LOCATION}:/usr/src/app/upload
+ - /mnt/nas/christmas-trip:/mnt/media/christmas-trip:ro
+ - /home/user/old-pics:/mnt/media/old-pics:ro
+ - /mnt/media/videos:/mnt/media/videos:ro
+ - /mnt/media/videos2:/mnt/media/videos2 # 注意: このフォルダー内のファイルは:roが付いていないためImmichによって削除される可能性があります。
+ - "C:/Users/user_name/Desktop/my media:/mnt/media/my-media:ro" # Windowsシステムでのインポートパス
ヒント

roフラグは、ボリュームに対する読み取り専用のアクセスのみを許可します。 これにより、Web UIで画像が削除されたり、XMPサイドカー(XMPサイドカー)でライブラリにメタデータが追加されるのを防ぐことができます。

情報

変更を登録するにはdocker compose up -dを実行してください。コンテナ内でマウントされたパスが確認できることを確認してください。

新しいライブラリを作成

これらの操作は、Immich管理者によって実行される必要があります。

  • 右上隅のアバターをクリック
  • [管理] -> [外部ライブラリ] をクリック
  • [外部ライブラリを作成...] をクリック
  • ライブラリの所有者を選択(後から変更不可)
  • /mnt/media/christmas-tripを入力し[追加]をクリック
  • [保存]をクリック
  • 新しく作成されたライブラリのドロップダウンメニューをクリック
  • [スキャン]をクリック
  • 新しく作成されたライブラリのドロップダウンメニューをクリック
  • [ライブラリ名を変更]をクリックし、ライブラリ名を"クリスマス旅行"に変更

注意: Dockerコンテナが認識するすべてのパスを使用する必要があるため、パスは/mnt/media/christmas-tripを使用する必要があります。

次に、Rawファイルをフィルタリングするための除外パターンを追加します。

  • 新しく作成されたクリスマスライブラリのドロップダウンメニューをクリック
  • [管理]をクリック
  • [スキャン設定]をクリック
  • [除外パターンを追加]をクリック
  • **/Raw/**を入力し保存をクリック
  • [保存]をクリック
  • 新しく作成されたライブラリのドロップダウンメニューをクリック
  • [スキャン]をクリック

クリスマス旅行のライブラリはバックグラウンドでスキャンされます。その間に、ビデオと古い写真を別のライブラリに追加します。

  • [外部ライブラリを作成]をクリック
ノート

ここでエラーが発生した場合、他の外部ライブラリの名前を変更してください。この問題は将来のリリースで修正される予定です。

  • 新しく作成されたライブラリのドロップダウンメニューをクリック
  • [インポートパスを編集]をクリック
  • [パスを追加]をクリック
  • /mnt/media/old-picsを入力し[追加]をクリック
  • [パスを追加]をクリック
  • /mnt/media/videosを入力し[追加]をクリック
  • [保存]をクリック
  • [スキャン]をクリック

数秒以内に、old-picsとvideosフォルダーのアセットがメインタイムラインに表示されるはずです。

フォルダービュー

フォルダビューは、タイムラインの他に提供される追加ビューで、ファイルエクスプローラーに似ています。ライブラリ内のフォルダやファイルをナビゲートすることができます。この機能は、高度にキュレーションされたカスタマイズされた外部ライブラリや、きれいに設定されたストレージテンプレートに便利です。

この機能は アカウント設定 > 機能 > フォルダ で有効にできます。

カスタムスキャン間隔を設定する

ノート

管理者のみがこれを行うことができます。

管理 -> 設定 -> 外部ライブラリ でカスタム間隔を定義することができます。 プリセットまたはcron形式を使用してスキャン間隔を設定できます。詳細については Crontab Guru を参照してください。