Self-hosting my photos with Immich

2025/11/30 18:11

Self-hosting my photos with Immich

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

記事では、著者が低電力Ryzen 7ミニPC(ASRock DeskMini X600)に64 GB RAM、1 TBディスクを搭載し、アイドル時の消費電力が10 W未満である環境にImmichをセットアップした手順を説明しています。Proxmox上に「photos」という名前のVMを作成し、500 GBのストレージ、4つのCPUコア、4 GB RAMを割り当てました。NixOS設定ファイルで

services.immich.enable = true
を有効化してImmichサービスを起動します。このサービスは
tailscale serve --bg http://localhost:2283
コマンドと MagicDNS/TLS によりTailscale経由で公開され、
https://photos.example.ts.net
からアクセス可能です。

公式の

immich‑cli
を使用した初期写真インポートでは、バックグラウンドジョブがタイムアウトし、Google Takeout のJSONメタデータが無視されるという問題が発生しました。第三者ツール immich-go が両方の問題を解決します。
immich-go upload from-google-photos …
を実行することでバックグラウンドタスクを一時停止し、Google Takeout アーカイブを正しく処理できます。その後、iPhoneアプリはTailscale URL経由でログインし、自動アップロードが有効化され、通知は無効にしてアップロードアラートを防止します。

バックアップについては、著者はsystemdタイマーを使用して

/var/lib/immich
(UPLOAD_LOCATION)ディレクトリ全体を rsync で3‑2‑1戦略で同期する予定です。これはImmichの公式ドキュメントに従った方法です。記事では、Immichには組み込みの写真編集機能がないため、ユーザーはGIMPなど外部ツールを使用しなければならず、共有もまだGoogle Photos経由で行われると指摘しています。Enteと比較して、著者は既存のTailscale VPNとLUKSディスク暗号化が十分なセキュリティを提供するため、エンドツーエンド暗号化を必要としないImmichを好んでいます。

総じて、このセットアップは小型かつ省電力マシン上で高速で信頼性の高いセルフホスト写真保存ソリューションを実現しており、外部編集ワークフローを受け入れられる趣味家や小規模ビジネスに適しています。

本文

目次

  1. ステップ 1 – ハードウェア
  2. ステップ 2 – Immich のインストール
  3. ステップ 3 – 初期写真のインポート
  4. ステップ 4 – Immich iPhone アプリの導入
  5. ステップ 5 – バックアップ
  6. 何が足りないか?
  7. なぜ Immich を選ぶのか…?
  8. 結論

私はクラウドサービスを利用するたびに、データのローカルコピーをバックアップと自立性のために保持したいと考えています。gphotos‑sync が 2025 年 3 月に Google によって OAuth スコープが制限されたことで動作しなくなったため、既存の Google Photos 環境に代わるツールを探す必要がありました。本記事では Immich(セルフホスティング型フォトマネージャー)のセットアップ手順をご紹介します。

ここで最終的に得られた結果:NixCon 2025 のライブ写真数枚


ステップ 1 – ハードウェア

Immich は Ryzen 7 Mini PC(ASRock DeskMini X600)上で稼働させています。アイドル時は 10 W 未満で、VM 用に十分なリソース(64 GB RAM, 1 TB ストレージ)を備えています。
詳細は 2024 年 7 月のブログ記事をご覧ください。

このミニサーバーを仮想マシンへ分割するために、オープンソースの仮想化プラットフォーム Proxmox を導入しました。Immich は任意のサーバー上にも直接インストールできます。


ステップ 2 – Immich のインストール

「photos」という名前で 500 GB のディスク、4 コア CPU、4 GB RAM を割り当てた VM を作成しました。
初期インポート時は CPU/RAM を多めに設定しても構いませんが、通常の運用ではこれで十分です。

  1. このブログ記事で説明したように、VM に NixOS を宣言的にインストールします。

  2. その後 Immich を有効化:

    services.immich = {
      enable = true;
    };
    

この時点では Immich は

localhost
上で利用可能ですが、NixOS のデフォルト設定ではファイアウォールが有効になっているためネットワークからはアクセスできません。
ファイアウォールを開ける代わりに Tailscale を使い公開します。

photos# tailscale serve --bg http://localhost:2283

Tailscale の MagicDNS と TLS 証明書自動発行が有効になっているので、

https://photos.example.ts.net
を任意の PC・ノートPC・スマホからブラウザで開くことができます。


ステップ 3 – 初期写真のインポート

最初は公式 Immich CLI でインポートを試みました:

% nix run nixpkgs#immich-cli -- login https://photos.example.ts.net secret
% nix run nixpkgs#immich-cli -- upload --recursive /home/michael/lib/photo/gphotos-takeout

アップロードは安定せず、タイムアウトすることが頻繁に起きました。
サーバー側のバックグラウンドジョブ(サムネイル生成・メタデータ抽出・顔検出)が処理を遅延させ、失敗につながったと考えられます。

また Google Takeout のアーカイブには画像ファイルと同じディレクトリに JSON 形式のメタデータが置かれており、

immich-cli
はそれを無視します。

より良いツールは immich-go です。
アップロード前にバックグラウンドタスクを一時停止し、終了後に再開します。また Google Takeout アーカイブを理解しています:

% immich-go \
    upload \
    from-google-photos \
    --server=https://photos.example.ts.net \
    --api-key=secret \
    ~/Downloads/takeout-*.zip

これでスムーズにインポートが完了しました。


ステップ 4 – Immich iPhone アプリの導入

新しい写真の主な撮影場所はスマホですので、iPhone に Immich アプリをインストールし、Tailscale URL でサーバーへログイン。右上のアイコンから自動バックアップを有効にしました。

設定が正しいかどうか完全には確信できません。カメラ撮影は通常 Live Photos に入るようですが、「Recent」で他のファイルも含まれると考えています。ご存知の方がいらっしゃれば、説明またはリンクをいただければこの記事を更新します。

また Immich の通知をオフにすることを強く推奨します。バックグラウンドで画像がアップロードされるたびに通知が届きますが、これは必須ではありません。
設定 → アプリ → Immich → 通知 へ行き、許可チェックボックスのチェックを外してください。


ステップ 5 – バックアップ

Immich の公式ドキュメントでは、

UPLOAD_LOCATION
(NixOS では
/var/lib/immich
)全体をバックアップすることが推奨されています。
backups
サブディレクトリには SQL ダンプが、
upload
,
library
,
profile
ディレクトリにはユーザーがアップロードしたすべてのデータが格納されています。

私は systemd タイマーを設定し、rsync で

/var/lib/immich
を自宅 PC にコピーするようにしました。これにより 3‑2‑1 バックアップ方針(3つのコピー、2種類のメディア、1か所のロケーション)を実現しています。


何が足りないか?

  • Immich は現在写真編集機能を持っていません。画像を回転・トリミングしたい場合はダウンロードして GIMP 等で編集します。
  • 共有機能については、まだ Google Photos にアップロードして共有しています(相手に応じて)。

なぜ Immich を選ぶのか…?

セルフホスティング型画像管理ツールとして最も注目されるのは ImmichEnte の2つです。

私の環境では Immich がより人気で、Ente は必要以上に大きなプラットフォームのように感じました。

Ente は完全オープンソースかつエンドツーエンド暗号化されたクラウドストレージを提供し、信頼できるプロバイダー不要です。この上で Ente Photos(Apple/Google Photos の代替)と Ente Auth(2FA 代替)の2つのアプリを構築しています。

私はエンドツーエンド暗号化が必要ないため、トランジット層(Tailscale)とディスク層(LUKS)で既に保護されています。追加の複雑さは不要です。


結論

Immich は使い勝手の良いアプリです!
高速でほぼ問題なく動作しますが、初期インポートは正しいツールを選べばスムーズです。公式

immich-cli
の改善や、
immich-go
を標準にすることが望まれます。
iPhone での自動バックアップ設定は少し手間ですが、改善の余地があります。

その他初期のハードル以外には不満はありません。


この記事がお役に立ったら?
ブログの RSS フィードを購読して新着記事をお見逃しなく!
2005 年からブログを書き続けて 20 年以上、知識と経験を広めています。 :)

ご支援いただける場合はコーヒーをご購入ください。ありがとうございます! ❤️

同じ日のほかのニュース

一覧に戻る →

2025/12/06 12:32

Nook Browser

## Japanese Translation: > **概要:** > 製品「Browse」はプライバシーを最優先としたオープンソースのウェブブラウザで、ユーザーのデータが販売または追跡されることは決してないと約束しています。WebKit エンジンをベースに構築されており、高速なパフォーマンスと最小限のシステムオーバーヘッドを実現しながら、インターフェイスはクリーンで侵入的なポップアップがありません。チャット支援や要約、最新のウェブ情報などの AI 機能は、ユーザーが明示的に選択した場合のみ利用可能です。コードベース全体が公開されており、パーミッシブ ライセンスでリリースされています。また、コミュニティ主導のロードマップに従い、新しいツールを追加する前に安定性を優先しています。設定はユーザーが理解しやすく、逆行可能(戻せる)ように設計されています。FAQ セクションでは、これらのポイント以外に独自の情報は提供されていません。 このバージョンは主要なポイントをすべて保持し、業界への影響についての推測を削除し、設定の逆行性と FAQ の内容に関する欠落した詳細を追加しています。

2025/12/06 0:35

Cloudflare outage on December 5, 2025

## Japanese Translation: ``` ## Summary Cloudflare の 2025 年 12 月 5 日の障害は約 25 分間続きました。 08:47 UTC にネットワークセグメントが故障を開始し、08:50 UTC に完全な影響に達し、09:12 UTC に問題が解決しました。 全 HTTP トラフィックの約 28 %(古い FL1 プロキシと Managed Rulesets を使用している顧客)がエラーを経験しましたが、中国ネットワークトラフィックは影響を受けませんでした。 障害は、CVE‑2025‑55182(React Server Components の脆弱性)を修正するために意図された二つの急速なコード変更によって引き起こされました。 まず、WAF バッファサイズが 128 KB から 1 MB に増加し、段階的に展開されました。 次に、グローバル設定更新で内部 WAF テストツールが無効化され、FL1 のルールモジュールで Lua エラー(`attempt to index field 'execute' (a nil value)`)を引き起こし、HTTP 500 応答を生成しました。 このバグは何年も存在していましたが、「execute」ルールのキースイッチが execute フィールドが欠落した際に処理するコードを回避したために露呈しました。 同様で大規模なインシデントが 2025 年 11 月 18 日にも発生しました。 Cloudflare はロールアウト手順の強化、バージョン管理制御の追加、ブレイクグラスアクセスの簡素化、およびフェイルオープンエラーハンドリングの実装に取り組んでいます。詳細なレジリエンシー計画は来週公開される予定であり、新しい緩和策が稼働するまでネットワーク変更は停止されたままです。 この出来事は、大規模 CDN 運用における厳格な変更管理の必要性を強調し、迅速展開保護策に関する業界全体での見直しを促す可能性があります。 ```

2025/12/06 12:17

PalmOS on FisherPrice Pixter Toy