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

Immich CLI

Immichにはコマンドラインインターフェース(CLI)があり、コマンドラインから特定の操作を実行できます。

機能

  • Immichへの写真や動画のアップロード
  • サーバーバージョンの確認

今後さらに多くの機能が計画されています。

Google フォトのTakeout

GoogleフォトのTakeoutをインポートしたい場合は、コミュニティで維持されているツールimmich-goをお勧めします。

必要条件

  • Node.js 20以上
  • Npm

Nodeやnpmをインストールできない場合は、以下にDockerバージョンも利用可能です。

インストール方法 (NPM)

npm i -g @immich/cli

注意: 以前にCLIの古いバージョンをインストールした場合は、先にアンインストールする必要があります。

npm uninstall -g immich

インストール方法 (Docker)

システム上でnpmが利用できない場合は、Dockerバージョンを試すことができます。

docker run -it -v "$(pwd)":/import:ro -e IMMICH_INSTANCE_URL=https://your-immich-instance/api -e IMMICH_API_KEY=your-api-key ghcr.io/immich-app/immich-cli:latest

IMMICH_INSTANCE_URLIMMICH_API_KEY環境変数を適切に修正してください。また、Dockerのenvファイルを使用して敏感なAPIキーを保存することも可能です。

このdocker runコマンドはコンテナ内で直接コマンドimmichを実行します。以下のように求めるパラメータを直接コマンドラインに追加できます。

docker run -it -v "$(pwd)":/import:ro -e IMMICH_INSTANCE_URL=https://your-immich-instance/api -e IMMICH_API_KEY=your-api-key ghcr.io/immich-app/immich-cli:latest upload -a -c 5 --recursive directory/

使用方法

使用方法
$ immich
使用法: immich [オプション] [コマンド]

Immichのコマンドラインインターフェース

オプション:
-V, --version バージョンを出力
-d, --config-directory <directory> auth.ymlが保存される設定ディレクトリ (デフォルト: "~/.config/immich/", env:
IMMICH_CONFIG_DIR)
-u, --url [url] ImmichサーバーURL (env: IMMICH_INSTANCE_URL)
-k, --key [key] Immich APIキー (env: IMMICH_API_KEY)
-h, --help ヘルプを表示

コマンド:
login|login-key <url> <key> APIキーでログイン
logout 保存された認証情報を削除
server-info サーバー情報を表示
upload [オプション] [paths...] アセットをアップロード
help [command] コマンドのヘルプを表示

コマンド

uploadコマンドは以下のオプションをサポートしています:

オプション
使用法: immich upload [paths...] [オプション]

アセットをアップロード

引数:
paths アップロードするアセットの1つ以上のパス

オプション:
-r, --recursive 再帰 (デフォルト: false, env: IMMICH_RECURSIVE)
-i, --ignore <pattern> 無視するパターン (env: IMMICH_IGNORE_PATHS)
-h, --skip-hash アップロード前にファイルをハッシュしない (デフォルト: false, env: IMMICH_SKIP_HASH)
-H, --include-hidden 隠しフォルダを含む (デフォルト: false, env: IMMICH_INCLUDE_HIDDEN)
-a, --album フォルダ名に基づいて自動的にアルバムを作成 (デフォルト: false, env: IMMICH_AUTO_CREATE_ALBUM)
-A, --album-name <name> 指定したアルバムにすべてのアセットを追加 (env: IMMICH_ALBUM_NAME)
-n, --dry-run 実際にはアクションを行わず、実行される内容を表示 (デフォルト: false, env: IMMICH_DRY_RUN)
-c, --concurrency <number> 同時にアップロードするアセット数 (デフォルト: 4, env: IMMICH_UPLOAD_CONCURRENCY)
-j, --json-output 詳細情報をJSON形式で出力 (デフォルト: false, env: IMMICH_JSON_OUTPUT)
--delete ローカルアセットをアップロード後に削除 (env: IMMICH_DELETE_ASSETS)
--no-progress プログレスバーを非表示 (env: IMMICH_PROGRESS_BAR)
--watch 変更を監視し自動的にアップロード (デフォルト: false, env: IMMICH_WATCH_CHANGES)
--help コマンドのヘルプを表示

上記のオプションは環境変数から読み取ることも可能です。

クイックスタート

最初に自分のImmichサーバーに認証します。例えば:

# immich login [url] [key]
immich login http://192.168.1.216:2283/api HFEJ38DNSDUEG

これにより認証情報がauth.ymlファイルとして設定ディレクトリに保存されます。デフォルトは~/.config/immich/です。ディレクトリは-dオプションまたは環境変数IMMICH_CONFIG_DIRで設定できます。このファイルを安全に保管してください。使用終了後はログアウトコマンドを実行するか、手動でファイルを削除してください。

認証されると、Immichサーバーにアセットをアップロードできます。

immich upload file1.jpg file2.jpg

デフォルトではサブフォルダは含まれません。サブフォルダを含むディレクトリをアップロードするには、--recursiveオプションを使用してください。

immich upload --recursive directory/

何が実行されるのか確認したい場合は、--dry-runオプションで実際にはアクションを行わずプレビューできます。

immich upload --dry-run --recursive directory/

デフォルトでは、アップロード前にファイルがハッシュされます。これにより同じファイルを複数回アップロードしないようにします。ファイルが確実にユニークな場合は、--skip-hashオプションでこのステップをスキップできます。ただし、Immichは常にハッシュによる重複除去を行うため、これは単なる性能向上の観点となります。十分な帯域幅がある場合は、ハッシュをスキップした方が高速になる可能性があります。

immich upload --skip-hash --recursive directory/

フォルダ名に基づいてアルバムを自動的に作成するには、--albumオプションを使用してください。これによりアップロードされたアセットに基づいて自動的にアルバムが作成されます。

immich upload --album --recursive directory/

特定のアルバムにすべてのアセットをアップロードするには、--album-nameオプションを使用できます。

immich upload --album-name "My summer holiday" --recursive directory/

グロブパターンに一致するアセットをスキップするには、--ignoreオプションを使用します。グロブパターンの使用方法についてはライブラリドキュメントを参照してください。必要に応じて複数の除外パターンを追加できます。

immich upload --ignore **/Raw/** --recursive directory/
immich upload --ignore **/Raw/** **/*.tif --recursive directory/

デフォルトでは隠しファイルはスキップされます。隠しファイルを含めたい場合は、--include-hiddenオプションを使用してください。

immich upload --include-hidden --recursive directory/

--json-outputオプションを使用することで、アップロードされる新規ファイル、重複ファイル、新しいアセットを含むJSONを出力できます。一部のログ出力があるため、JSONを取得するには出力の最初の3行を除去する必要があります。例えば、アップロードされるファイルの一覧をさらなる処理のために取得するには:

immich upload --dry-run . | tail -n +4 | jq .newFiles[]

APIキーの取得

APIキーはウェブインターフェースのユーザー設定パネルで取得できます。

APIキーを取得