ponshu-room-lite/docs/CLOUDFLARE_TUNNEL_SETUP.md

251 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Cloudflare Tunnel セットアップガイド
## 概要
Tailscale Funnelの不安定性を解決するため、Cloudflare Tunnelを使用してSynology上のサービスを安全に公開します。
## メリット
- ✅ 完全無料Cloudflare無料プラン
- ✅ 99.99%稼働率Cloudflareのグローバルインフラ
- ✅ 自動HTTPSSSL証明書不要
- ✅ DDoS保護付き
- ✅ Synology再起動時も自動再接続
- ✅ 知人に展開しても安心の安定性
## 前提条件
1. Cloudflareアカウント無料
2. ドメイン名既存ドメインまたはCloudflare Pagesの無料ドメイン
3. Synology Docker環境
---
## Step 1: Cloudflareアカウントとドメイン設定
### 1-1. Cloudflareアカウント作成
https://dash.cloudflare.com/sign-up
### 1-2. ドメイン追加
既存ドメインをCloudflareに追加、またはCloudflare Pagesで無料ドメイン取得
**既存ドメインの場合:**
1. Cloudflareダッシュボード → 「Add a Site」
2. ドメイン入力(例: example.com
3. ネームサーバーをCloudflareに変更ドメイン registrarで設定
**無料ドメインの場合:**
1. Cloudflare Pages → 「Create a project」
2. 適当なプロジェクト作成 → `xxx.pages.dev` が発行される
3. このサブドメインを使用可能
---
## Step 2: Cloudflare Tunnel作成
### 2-1. Zero Trustダッシュボードへ移動
https://one.dash.cloudflare.com/
### 2-2. トンネル作成
1. 左メニュー → **「Access」** → **「Tunnels」**
2. 「Create a tunnel」をクリック
3. トンネル名を入力(例: `posimai-synology`
4. 「Save tunnel」
### 2-3. トークン取得
トンネル作成後、**トンネルトークン**が表示されます(後で使用)
```
eyJhIjoiNzQ5YmJhMGVhZjU5NDhhNWFkZGM3MTk3YTcxNTRmOGQiLCJ0IjoiOGE5YzEyMzQtNTY3OC05MGFiLWNkZWYtMTIzNDU2Nzg5MGFiIiwicyI6Ik5UQTBPVEl4TXpRdE5qY3lNUzAwTmpkbExXRTBNRFF0WkRJNU1qWTRNREkyWWpFMSJ9
```
このトークンをメモ(次のステップで使用)
---
## Step 3: Synology Dockerでトンネル起動
### 3-1. SSH接続
```bash
ssh admin@192.168.x.x
```
### 3-2. Dockerコンテナ起動
```bash
sudo docker run -d \
--name cloudflared-tunnel \
--restart=unless-stopped \
cloudflare/cloudflared:latest tunnel \
--no-autoupdate run \
--token eyJhIjoiNzQ5YmJhMGVhZjU5NDhhNWFkZGM3MTk3YTcxNTRmOGQiLCJ0IjoiOGE5YzEyMzQtNTY3OC05MGFiLWNkZWYtMTIzNDU2Nzg5MGFiIiwicyI6Ik5UQTBPVEl4TXpRdE5qY3lNUzAwTmpkbExXRTBNRFF0WkRJNU1qWTRNREkyWWpFMSJ9
```
**注意:** `--token` の後ろに先ほどメモしたトークンを貼り付け
### 3-3. 起動確認
```bash
sudo docker ps | grep cloudflared
```
以下のように表示されればOK:
```
CONTAINER ID IMAGE STATUS
abc123def456 cloudflare/cloudflared:latest Up 2 minutes
```
---
## Step 4: Public Hostname設定サービス公開
### 4-1. Cloudflare Zero Trustダッシュボードに戻る
https://one.dash.cloudflare.com/ → **「Tunnels」** → 先ほど作成したトンネルをクリック
### 4-2. Public Hostnamesタブ → 「Add a public hostname」
#### 例1: Posimai Brain API
| 項目 | 設定値 |
|------|--------|
| Subdomain | `posimai-brain` |
| Domain | `example.com`(あなたのドメイン) |
| Path | (空欄) |
| Type | `HTTP` |
| URL | `localhost:8080`Synology上のPosimai Brain APIポート |
→ アクセス先: `https://posimai-brain.example.com`
#### 例2: Gitea
| 項目 | 設定値 |
|------|--------|
| Subdomain | `gitea` |
| Domain | `example.com` |
| Path | (空欄) |
| Type | `HTTP` |
| URL | `localhost:3000` |
→ アクセス先: `https://gitea.example.com`
#### 例3: Posimai APIFlask
| 項目 | 設定値 |
|------|--------|
| Subdomain | `posimai-api` |
| Domain | `example.com` |
| Path | (空欄) |
| Type | `HTTP` |
| URL | `localhost:5000` |
→ アクセス先: `https://posimai-api.example.com`
### 4-3. 保存して完了
「Save hostname」をクリック
---
## Step 5: 動作確認
### 5-1. ブラウザでアクセス
```
https://posimai-brain.example.com/health
```
正常にレスポンスが返ればOK
### 5-2. Posimai Brain UIのAPI URLを変更
#### 修正前:
```javascript
const SYNOLOGY_API = 'https://posimai-lab.tail72e846.ts.net/brain/api';
```
#### 修正後:
```javascript
const SYNOLOGY_API = 'https://posimai-brain.example.com';
```
### 5-3. Vercel再デプロイ
```bash
cd /c/Users/maita/posimai-project/posimai-brain
vercel --prod
```
---
## Step 6: 複数サービスの公開(オプション)
同じトンネルで複数サービスを公開可能:
| サービス | URL | Synologyポート |
|---------|-----|---------------|
| Posimai Brain API | `https://posimai-brain.example.com` | `localhost:8080` |
| Gitea | `https://gitea.example.com` | `localhost:3000` |
| Posimai API (Flask) | `https://posimai-api.example.com` | `localhost:5000` |
| Ponshu Room Lite AI Proxy | `https://ponshu-ai.example.com` | `localhost:8000` |
すべて同じトンネルで公開可能(追加コストなし)
---
## トラブルシューティング
### Q1. トンネルが起動しない
```bash
# ログ確認
sudo docker logs cloudflared-tunnel
# 再起動
sudo docker restart cloudflared-tunnel
```
### Q2. 502 Bad Gateway
- Synology上のサービスが起動しているか確認
- ポート番号が正しいか確認(`localhost:8080` など)
### Q3. SSL証明書エラー
- Cloudflareが自動でHTTPS証明書を発行するため、特に設定不要
- ドメインのDNSがCloudflareを向いているか確認
---
## Tailscale Funnelからの移行手順
### 移行前の確認
```bash
# 現在のTailscale Funnel設定を確認
tailscale funnel status
```
### 移行手順
1. Cloudflare Tunnel設定完了
2. Posimai Brain UIのAPI URL変更上記参照
3. Vercel再デプロイ
4. 動作確認後、Tailscale Funnelを停止
```bash
tailscale funnel off
```
### ロールバック方法
万が一問題があれば、元のTailscale Funnel設定に戻せます:
```bash
tailscale funnel on 8080
```
---
## まとめ
### メリット
- ✅ Synology再起動時も自動再接続`--restart=unless-stopped`
- ✅ 無料で複数サービス公開可能
- ✅ Cloudflareの高速CDN経由でアクセス
- ✅ DDoS保護、WAFWeb Application Firewall付き
- ✅ 知人に展開しても安心の安定性
### デメリット
- Cloudflareアカウント設定が必要初回のみ1時間程度
- ドメイン設定が必要(既存ドメインまたは無料ドメイン)
### 次のステップ
1. Cloudflareアカウント作成
2. トンネルトークン取得
3. Synology Dockerで起動
4. 動作確認
5. Posimai Brain UI修正 & 再デプロイ
不明点があればサポートします!