自宅PCのローカルLLMに独自ドメインで外部からアクセスする【Cloudflare Tunnel + Ollama】
なにこれ
「自宅のデスクトップでLLMを動かして、外出先やバックエンドサーバーからAPIとして叩きたい!」
この記事では、自宅のUbuntu PCにOllamaをセットアップし、Cloudflare Tunnelを使って外部からアクセスできるようにした自身の備忘録を書きます。
この記事でできるようになること
- 自宅PCでLLM(Llama 3.2など)を動かす
-
https://llm.your-domain.comのような独自ドメインでアクセス - メール認証やService Tokenによるセキュリティ保護
- バックエンドサーバーからAPIとして利用
必要なもの
- 独自ドメイン (ムームードメインなどで取得)
- Cloudflareアカウント(無料プランでOK)
全体の構成
[外部] → [Cloudflare Edge] → [Cloudflare Tunnel] → [自宅PC:Ollama]
↑
認証(Access)
ポート開放不要で、Cloudflareが安全なトンネルを提供してくれます。
Step 1: Ollamaのインストール
まずは自宅PCにOllamaをインストールします。
# 公式スクリプトでインストール
curl -fsSL https://ollama.com/install.sh | sh
または Homebrew を使っている場合:
brew install ollama
モデルのダウンロード
# Llama 3.2をダウンロード(約2GB)
ollama pull llama3.2
動作確認
ollama run llama3.2
対話モードで動けばOKです。/bye で終了。
Step 2: Cloudflareにドメインを追加
私はムームードメインで、ドメインを取得しました。
Cloudflareアカウント作成
https://dash.cloudflare.com/ にアクセスしてアカウントを作成します。
ドメインの追加
- ダッシュボードのDomains」 → ドメインを入力
- 「Quick scan for DNS records」を選択して Continue
- プラン選択 → Free を選択
- Cloudflareのネームサーバーが表示されます
ネームサーバーの変更
ドメインを管理しているサービス(ムームードメインなど)で、ネームサーバーをCloudflareのものに変更します。
例:
ネームサーバ1: xxxx.ns.cloudflare.com
ネームサーバ2: ????.ns.cloudflare.com
反映には数分〜数時間かかります
Cloudflare Tunnelの作成
cloudflaredのインストール
# Homebrewの場合
brew install cloudflared
Zero Trustダッシュボードでトンネル作成
- https://one.dash.cloudflare.com/ にアクセス
- 初回はチーム名を設定(例:
myteam) - Networks → Tunnels → Create a tunnel
- Cloudflaredを選択 → Next
- トンネル名を入力(例:
llm-server)→ Save tunnel
コネクタのインストール
表示される画面でDebianを選択(Ubuntuなので)し、表示されるコマンドを実行:
sudo cloudflared service install hogepiyo...(トークン)
これでcloudflaredがsystemdサービスとして登録され、自動起動するようになります。
Public Hostnameの設定
Nextをクリックして、以下を設定:
| 項目 | 値 |
|---|---|
| Subdomain | llm |
| Domain |
your-domain.com(ドロップダウンから選択) |
| Type | HTTP |
| URL | localhost:11434 |
Save tunnelをクリック。
つまりポイント (追加設定)
ここまでで https://llm.your-domain.com にアクセスできるはずですが、おそらく 403 Forbidden が返ってきます。
これはOllamaのセキュリティ機能が原因でした。私はここでめっちゃ詰まりました。
HTTP Host Headerの設定
ローカルのOllamaは Host: llm.your-domain.com のヘッダーを拒否するっぽいです。
Cloudflare側で書き換える必要があります。
- https://one.dash.cloudflare.com/
- Networks → Tunnels →
llm-server - Public Hostname タブ →
llm.your-domain.comの Edit - Additional application settings を展開
- HTTP Settings → HTTP Host Header に
localhostと入力 (これで、localhostがヘッダーになる) - Save
動作確認
curl https://llm.your-domain.com
Ollama is running と表示されれば成功です!
Step 5: 認証の追加
このままだと誰でもアクセスできてしまうので、認証を追加します。
メール認証(ブラウザアクセス用のメール認証)
- https://one.dash.cloudflare.com/
- Access → Applications → Add an application
- Self-hostedを選択
- 設定:
- Application name:
LLM Server - Session duration:
24 hours
- Application name:
- Add public hostname →
llm.your-domain.comを入力 - Add a policy:
- Policy name:
Allow Me - Action:
Allow - Selector:
Emails - Value: 自分のメールアドレス
- Policy name:
- Save
これでブラウザからアクセスすると、メール認証が求められるようになります。

Service Token(API・バックエンド用)
プログラムからアクセスする場合は、認証で突破したいですよね。
Service Tokenを使います。
トークンの作成:
- Access → Service Auth → Service Tokens
- Create Service Token
- 名前を入力(例:
Backend) - Generate token
- Client ID と Client Secret をメモ(Secretは一度しか表示されません)
ポリシーの追加:
- Access → Applications → LLM Server を編集
- Policies タブ → Add a policy
- 設定:
- Policy name:
Allow Service Token - Action:
Service Auth - Selector:
Service Token - Value: 作成したトークンを選択
- Policy name:
- Save
APIからのアクセス方法:
curl -H "CF-Access-Client-Id: YOUR_CLIENT_ID" \
-H "CF-Access-Client-Secret: YOUR_CLIENT_SECRET" \
https://llm.your-domain.com/api/generate \
-d '{"model": "llama3.2", "prompt": "Hello", "stream": false}'
Step 6: Ollamaの自動起動設定
PCを再起動してもOllamaが自動で起動しててほしいですね。
sudo tee /etc/systemd/system/ollama-custom.service << 'EOF'
[Unit]
Description=Ollama Service
After=network.target
[Service]
Environment="OLLAMA_ORIGINS=*"
ExecStart=/usr/local/bin/ollama serve
Restart=always
User=your-username
[Install]
WantedBy=multi-user.target
EOF
# パスは環境に合わせて変更(which ollama で確認)
# Homebrewの場合: /home/linuxbrew/.linuxbrew/bin/ollama
sudo systemctl daemon-reload
sudo systemctl enable ollama-custom
sudo systemctl start ollama-custom
まとめ
| 項目 | 設定 |
|---|---|
| エンドポイント | https://llm.your-domain.com |
| LLMサーバー | Ollama |
| トンネル | Cloudflare Tunnel(無料) |
| 認証(ブラウザ) | メール認証 |
| 認証(API) | Service Token |
これで、外出先からでも、バックエンドサーバーからでも、安全に自宅のLLMを利用できてハッピー!!!!!
Discussion