リバースプロキシ
ユーザーは、リバースプロキシをカスタムでデプロイし、リクエスト をImmichに転送することができます。これにより、リバースプロキシがTLS終端、ロードバランシング、またはその他の高度な機能を処理できます。Immichとユーザーの間のすべてのリバースプロキシは、すべてのヘッダーを転送し、Host
、X-Real-IP
、X-Forwarded-Proto
、およびX-Forwarded-For
ヘッダーを適切な値に設定する必要があります。さらに、リバースプロキシは大きなファイルのアップロードを許可する必要があります。これらの手法に従うことで、すべてのカスタムリバースプロキシがImmichと完全に互換性を持つようになります。
修復ページの読み込みには時間がかかる場合があります。サーバーのタイムアウトやエラーを回避するために、プロキシサーバーで少なくとも10分のタイムアウトを指定することをお勧めします。
Immichはlocation /immich {
のようなサブパスでの提供をサポートしていません。サブドメインまたはルートパスで提供する必要があります。
Nginxのサンプル設定
以下はnginxのサンプル設定です。public_url
をインスタンスの表向きのURLに設定し、backend_url
をImmichサーバーのパスに設定してください。
server {
server_name <public_url>;
# 大きなファイルのアップロードを許可
client_max_body_size 50000M;
# ヘッダー設定
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocketを有効化:http://nginx.org/en/docs/http/websocket.html
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_redirect off;
# タイムアウト設定
proxy_read_timeout 600s;
proxy_send_timeout 600s;
send_timeout 600s;
location / {
proxy_pass http://<backend_url>:2283;
}
}
Let's Encryptとの互換性
nginxの設定にLet's Encrypt用のセクションが含まれている場合、以下のようなセグメントが含まれている可能性があります:
location ~ /.well-known {
...
}
この特定のlocation
ディレクティブは、モバイルクライアントが/.well-known/immich
パスに到達するのを意図せず妨げる可能性があります。これは、発見に重要なパスです。この場合によくあるエラーメッセージは「アプリのメジャーバージョンがサーバーと互換性がありません」となります。この問題を解決するために、このパス専用の追加ロケーションブロックを導入し、リクエストが正しくImmichサーバーにプロキシされるようにしてください:
location = /.well-known/immich {
proxy_pass http://<backend_url>:2283;
}
これにより、Let's Encryptの機能を維持しながら、モバイルクライアントが必要なImmichパスにアクセスできるようになります。
Caddyのサンプル設定
nginxの代わりに、Caddyをリバースプロキシとして使用することもできます(自動HTTPS構成機能付き)。以下はそのサンプル設定です。
immich.example.org {
reverse_proxy http://<snip>:2283
}
Apacheのサンプル設定
以下はApache2のサイト設定のサンプルです。
<VirtualHost *:80>
ServerName <snip>
ProxyRequests Off
# 秒単位でタイムアウト設定
ProxyPass / http://127.0.0.1:2283/ timeout=600 upgrade=websocket
ProxyPassReverse / http://127.0.0.1:2283/
ProxyPreserveHost On
</VirtualHost>
Traefik Proxyのサンプル設定
以下はTraefikバージョン3向けのサンプルです。
重要なのは、Immichが使用するエントリーポイントのrespondingTimeouts
を増加させることです。この例では、ポート443
のwebsecure
エントリーポイントです。デフォルトでは60秒に設定されており、これが原因でビ デオが1分後にアップロードを停止(エラーコード499)することがあります。この設定では10分後に失敗するようになり、ほとんどのケースではこれで十分です。必要に応じてさらに増加させてください。
traefik.yaml
[...]
entryPoints:
websecure:
address: :443
# このセクションを追加する必要が あります
transport:
respondingTimeouts:
readTimeout: 600s
idleTimeout: 600s
writeTimeout: 600s
次に、Immichが含まれるdocker-compose.yml
ファイルの設定です。以下の例のように、Traefik専用のラベルを追加してください。
docker-compose.yml
services:
immich-server:
[...]
labels:
traefik.enable: true
# このエントリーポイントにおける読み取りタイムアウトを増加させます
traefik.http.routers.immich.entrypoints: websecure
traefik.http.routers.immich.rule: Host(`immich.your-domain.com`)
traefik.http.services.immich.loadbalancer.server.port: 2283
TraefikがImmichが存在するネットワークと通信できるようにする必要があることを覚えておいてください。通常、Traefikネットワークをimmich-server
に追加することで実行されます。