<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Cloudflare on 屑籠というかゴミ箱</title><link>https://blog.teandt.net/categories/cloudflare/</link><description>Recent content in Cloudflare on 屑籠というかゴミ箱</description><generator>Hugo -- gohugo.io</generator><language>ja-jp</language><lastBuildDate>Mon, 07 Sep 2026 19:15:50 +0900</lastBuildDate><atom:link href="https://blog.teandt.net/categories/cloudflare/index.xml" rel="self" type="application/rss+xml"/><item><title>セルフホストのimmichをCloudflare環境で100MB制限を回避する</title><link>https://blog.teandt.net/posts/2026/09/20260907-191550/</link><pubDate>Mon, 07 Sep 2026 19:15:50 +0900</pubDate><guid>https://blog.teandt.net/posts/2026/09/20260907-191550/</guid><description>&lt;img src="https://blog.teandt.net/posts/2026/09/20260907-191550/image02.png" alt="Featured image of post セルフホストのimmichをCloudflare環境で100MB制限を回避する" /&gt;&lt;h2 id="immich"&gt;immich
&lt;/h2&gt;&lt;p&gt;Google Oneを100GBで契約しているけどAIプランを使うつもりが無いのでストレージ容量を結構気にしないといけない感じになっている。&lt;br&gt;
画像のアップロード場BAN対象になりやすそうなのもあり、セルフホスト出来るGoogleフォト代替の&lt;a class="link" href="https://immich.app/" target="_blank" rel="noopener"
 &gt;immich&lt;/a&gt;を試してみる。&lt;/p&gt;
&lt;h2 id="cloudflareの公開アプリケーションにおける制限について"&gt;Cloudflareの公開アプリケーションにおける制限について
&lt;/h2&gt;&lt;p&gt;Cloudflareではプロキシトラフィック1ペイロードあたりの制限がプランごとに決まっていて、Freeプランでは100MBに制限されている。&lt;a class="link" href="https://developers.cloudflare.com/support/troubleshooting/http-status-codes/4xx-client-error/error-413" target="_blank" rel="noopener"
 &gt;Error 413&lt;/a&gt;&lt;br&gt;
&lt;img alt="Cloudflareの1ペイロード制限" class="gallery-image" data-flex-basis="1284px" data-flex-grow="535" height="225" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.teandt.net/posts/2026/09/20260907-191550/image03.png" srcset="https://blog.teandt.net/posts/2026/09/20260907-191550/image03_hu_45bd489fdd0d3266.png 800w, https://blog.teandt.net/posts/2026/09/20260907-191550/image03.png 1204w" width="1204"&gt;&lt;/p&gt;
&lt;p&gt;画像であれば基本的に問題ないのでimmichで問題になることはあまりないかな？と思っていたけど動画を扱うと一瞬で100MBくらいは飛ぶのでできるだけ回避しておきたい。&lt;/p&gt;
&lt;h2 id="方針"&gt;方針
&lt;/h2&gt;&lt;p&gt;以下のような構成を想定して構築する。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;スマートフォン
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Cloudflare One Client / WARP
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ 認証済み端末
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ▼
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Cloudflare Zero Trust
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ Private hostname route
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ▼
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cloudflared（自宅）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ▼
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Immich
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;192.168.x.x:2283
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Cloudflare Zero TrustのPrivate hostname routeで公開せずにCloudflare Oneの認証を利用してアクセスする方式にする。&lt;br&gt;
ドキュメントを見ると以下の記載があり、1ファイルが大きい場合はPrivate network routeを使用するように記載がある。&lt;a class="link" href="https://developers.cloudflare.com/tunnel/routing" target="_blank" rel="noopener"
 &gt;Routing&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Public hostname routes proxy traffic through Cloudflare. On Free, Pro, and Business plans, the service-specific terms ↗ require you to use a specific paid service to serve video and other large files.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Refer to Delivering videos with Cloudflare for more information. To transfer large files privately, use a private network route instead.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Private networkについてはCloudflare One経由でのアクセスに限定されるけれど、現状CloudflareAccessの認証でOne/WARP利用を条件にしているので、使い勝手としては変わらないはず。&lt;br&gt;
自分以外、もしくは家族とか特定の人以外がアクセスしないような環境であればこの方法で問題ないはず、ということでこの方法で進める。&lt;br&gt;
そしてPrivate Hostname Routeについては先月一般提供始まった機能らしいので、これを使ってみる。&lt;/p&gt;
&lt;h2 id="構成環境"&gt;構成環境
&lt;/h2&gt;&lt;h3 id="概要"&gt;概要
&lt;/h3&gt;&lt;p&gt;環境としてはRHEL10のPodman環境で構築する。&lt;br&gt;
想定している構成は以下のような感じでtunnel用のcloudflaredをDMZ環境にしてリバースプロキシでやり取りする。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Cloudflare
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Immich Tunnel
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ▼
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;┌────────── Immich VM ────────────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ Podman network: immich-edge │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ cloudflared ─── Reverse Proxy │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ─────────┼──────── │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ Podman network: immich-app │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ Immich Server │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ PostgreSQL / Valkey │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└─────────────────────────────────────┘
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;最終的にimmichはEntraIDログインを強制するように出来るようなので、そのようにすることでパスワードを個別に管理することもしないことにする。&lt;/p&gt;
&lt;h3 id="使用サービス"&gt;使用サービス
&lt;/h3&gt;&lt;p&gt;以下の構成で検討。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;edge
&lt;ul&gt;
&lt;li&gt;cloudflared&lt;/li&gt;
&lt;li&gt;caddy&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;app
&lt;ul&gt;
&lt;li&gt;immich-server&lt;/li&gt;
&lt;li&gt;postgres&lt;/li&gt;
&lt;li&gt;valkey&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;データ自体はNASのHDDに置くようにして、その他はSSDで管理するように。&lt;br&gt;
NASからVMまではNFSで共有。&lt;/p&gt;
&lt;h2 id="cloudflare-zero-trust設定"&gt;Cloudflare Zero Trust設定
&lt;/h2&gt;&lt;p&gt;いくつかの設定はあるけれど基本的には&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;tunnelの追加&lt;/li&gt;
&lt;li&gt;プライベートホストのルート設定を追加&lt;/li&gt;
&lt;li&gt;Accessのアプリケーション設定の追加&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;といった感じでいく。&lt;br&gt;
後述するけどプライベートホストの名前はTLSで通信するための証明書を確保しようとする場合は保有するドメイン名で適当につける。&lt;/p&gt;
&lt;h2 id="cloudflare-apiの設定"&gt;Cloudflare APIの設定
&lt;/h2&gt;&lt;p&gt;TLS用の証明書確保のためLet&amp;rsquo;s Encriptを使うのだけれど、ローカルのIPアドレスのためDNS-01を使用する。そのために更新用のCloudflareでAPI設定をする必要がある。&lt;/p&gt;
&lt;p&gt;アカウントの管理&lt;br&gt;
→ アカウントAPIトークン&lt;br&gt;
→ トークンを作成&lt;br&gt;
→ 最初から作成&lt;br&gt;
→ 対象を「指定ドメイン」にして対象を指定&lt;br&gt;
→ DNS &amp;amp; Zone&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;DNS：Edit 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Zone： Read
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;に設定する。&lt;br&gt;
このときのAPIトークンを使用する。&lt;/p&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="1683px" data-flex-grow="701" height="151" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.teandt.net/posts/2026/09/20260907-191550/image01.png" srcset="https://blog.teandt.net/posts/2026/09/20260907-191550/image01_hu_7409e0d3412f7d46.png 800w, https://blog.teandt.net/posts/2026/09/20260907-191550/image01.png 1059w" width="1059"&gt;&lt;/p&gt;
&lt;p&gt;必要なトークンは一度しか表示されないので、記録を忘れたら作り直し。&lt;br&gt;
DNS-01の解説はこちらにありました。&lt;a class="link" href="https://qiita.com/n-eguchi/items/0cedd1a47f5621416204" target="_blank" rel="noopener"
 &gt;ホームサーバーの自己署名証明書を Let’s Encrypt の DNS-01 に変更し、自動配布まで行う&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="caddy"&gt;Caddy
&lt;/h2&gt;&lt;h3 id="docker構成"&gt;Docker構成
&lt;/h3&gt;&lt;p&gt;DockerHubにある標準？のCaddyだとCloudflareのDNS-01に対応していない？らしいのでCodexにDocerfile書いてもらった。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;dockerfile&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-dockerfile" data-lang="dockerfile"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;docker.io/library/caddy:2-builder-alpine&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;builder&lt;/span&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;RUN&lt;/span&gt; xcaddy build --with github.com/caddy-dns/cloudflare&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;docker.io/library/caddy:2-alpine&lt;/span&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;COPY&lt;/span&gt; --from&lt;span class="o"&gt;=&lt;/span&gt;builder /usr/bin/caddy /usr/bin/caddy&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;COPY&lt;/span&gt; Caddyfile /etc/caddy/Caddyfile&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="caddyfile"&gt;Caddyfile
&lt;/h3&gt;&lt;p&gt;リバースプロキシとして使用するCaddyがこのあたりの仕組みに対応しているようなので、Caddyfileに書いてしまう。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;caddifile&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-caddyfile" data-lang="caddyfile"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="k"&gt;email&lt;/span&gt; &lt;span class="se"&gt;{$ACME_EMAIL}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="k"&gt;acme_ca&lt;/span&gt; &lt;span class="s"&gt;https://acme-v02.api.letsencrypt.org/directory&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="k"&gt;auto_https&lt;/span&gt; &lt;span class="no"&gt;disable_redirects&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gh"&gt;https://&lt;/span&gt;&lt;span class="se"&gt;{$IMMICH_PRIVATE_HOSTNAME}&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="k"&gt;tls&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;		&lt;span class="k"&gt;dns&lt;/span&gt; &lt;span class="s"&gt;cloudflare&lt;/span&gt; &lt;span class="se"&gt;{env.CF_API_TOKEN}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;		&lt;span class="k"&gt;resolvers&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="s"&gt;.1.1.1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="k"&gt;reverse_proxy&lt;/span&gt; &lt;span class="n"&gt;immich-server&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;2283&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;ACME_EMAILやIMMICH_PRIVATE_HOSTNAMEは.envでまとめる感じで。&lt;br&gt;
先ほど設定したトークンはCF_API_TOKENに指定する。&lt;/p&gt;
&lt;h2 id="テスト"&gt;テスト
&lt;/h2&gt;&lt;h3 id="アクセステスト"&gt;アクセステスト
&lt;/h3&gt;&lt;p&gt;Cloudflare OneをONにした状態でアクセス出来るか確認してOKなら、その後Cloudflare OneをOFFにしてアクセスできないことを確認する。&lt;br&gt;
ついでに、ローカルからはTLSなしのhttpでアクセスすることにしたのでそういう環境で。&lt;br&gt;
immichのアプリ設定を見たところ、SSIDでローカル切替が出来るようなのでこれを利用してみたけど他のアプリと同様にVPN設定しているとWifiのSSID検出ができないようでうまくいかない。&lt;br&gt;
Cloudflare OneをOFFにしたら超高速でアップロードできたので、ちゃんとローカルと外部で切替はできている模様。&lt;br&gt;
やっぱりインターネット回線を10Gbpsにしたいな。&lt;br&gt;
10Gbpsでつながればゼロトラストな考えでローカルネットワークの通信も大半を一度インターネット側に渡しても良くなる気がする。&lt;/p&gt;
&lt;h3 id="大容量転送"&gt;大容量転送
&lt;/h3&gt;&lt;p&gt;この状態で起動して初期設定をしたあと、スマホで2分くらいの動画撮影してCloudflare経由で転送して問題ないことを確認する。&lt;br&gt;
300MBちょいのファイルを問題なく転送できたので、想定通りの動作をしている。&lt;/p&gt;</description></item></channel></rss>