Cloudflareセットアップ
Cloudflare TunnelとAccessを使用してreattachdへのセキュアなリモートアクセスを設定します。
前提条件: Cloudflareアカウントと、Cloudflareで管理されているドメインが必要です。
概要
このガイドでは2つのコンポーネントについて説明します:
- Cloudflare Tunnel - ポートを開放せずにreattachdをインターネットに安全に公開
- Cloudflare Access - Service Tokenを使用してトンネルに認証を追加し保護
cloudflaredをインストール
macOS
brew install cloudflared
Linux
# Debian/Ubuntu
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb -o cloudflared.deb
sudo dpkg -i cloudflared.deb
# その他のディストリビューション
# https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/downloads/ を参照
クイックスタート(テスト用)
ドメインを設定せずにリモートアクセスを素早くテストしたい場合は、Quick Tunnelを使用できます:
cloudflared tunnel --url http://localhost:8787
https://xxxx-xxxx-xxxx.trycloudflare.com のような一時的なURLが生成されます。
注意: Quick Tunnelはテスト専用です。コマンドを再起動するたびにURLが変わるため、毎回QRコードを再スキャンする必要があります。独自ドメインで恒久的にセットアップするには、以下に進んでください。
独自ドメインでの恒久的なセットアップ
cloudflared tunnel login
ブラウザが開き、Cloudflareアカウントに対してcloudflaredを認証・承認します。
cloudflared tunnel create reattach
トンネルが作成され、~/.cloudflared/<TUNNEL_ID>.jsonに認証情報ファイルが生成されます。
~/.cloudflared/config.ymlを作成または編集します:
tunnel: reattach
credentials-file: /Users/YOUR_USERNAME/.cloudflared/TUNNEL_ID.json
ingress:
- hostname: reattach.your-domain.com
service: http://localhost:8787
- service: http_status:404
YOUR_USERNAME、TUNNEL_ID、your-domain.comを実際の値に置き換えてください。
cloudflared tunnel route dns reattach reattach.your-domain.com
トンネルを指すCNAMEレコードが作成されます。
トンネルをテスト:
cloudflared tunnel run reattach
サービスとして実行(macOS)
sudo cloudflared service install
sudo launchctl start com.cloudflare.cloudflared
サービスとして実行(Linux)
sudo cloudflared service install
sudo systemctl enable cloudflared
sudo systemctl start cloudflared
パート2: Service Tokenを使用したCloudflare Access
Cloudflare Accessはトンネルに認証を追加します。Service Tokenを使用すると、Reattach iOSアプリが対話的なログインなしで認証できます。
- Cloudflare Zero Trust Dashboardにアクセス
- Access → Applicationsに移動
- Add an applicationをクリック
- Self-hostedを選択
- アプリケーションを設定:
- Application name: Reattach
- Session duration: 24 hours(またはお好みで)
- Application domain:
reattach.your-domain.com
- Zero Trust DashboardでAccess → Service Authに移動
- Create Service Tokenをクリック
- 名前を入力(例:「Reattach iOS」)
- トークンの有効期間を設定(例:1年)
- Generate tokenをクリック
重要: CF-Access-Client-IdとCF-Access-Client-Secretの両方をすぐにコピーしてください。シークレットは一度しか表示されません!
2つの値が取得できます:
CF-Access-Client-Id: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.access
CF-Access-Client-Secret: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- Access → ApplicationsでReattachアプリケーションに戻る
- アプリケーションをクリックして編集
- Policiesタブに移動
- ポリシーを追加:
- Policy name: Service Token Access
- Action: Service Auth
- Include: Service Token → 作成したトークンを選択
- ポリシーを保存
Reattach iOSアプリで:
- サーバー設定に移動
- Service Tokenの認証情報を入力:
- Client ID: CF-Access-Client-Id
- Client Secret: CF-Access-Client-Secret
- 設定を保存
アプリはすべてのAPIリクエストにこれらのヘッダーを自動的に含めます。
動作確認
すべてが正しく動作していることをテストします:
# 認証なしでテスト(403で失敗するはず)
curl https://reattach.your-domain.com/sessions
# Service Tokenでテスト(セッション一覧が返るはず)
curl -H "CF-Access-Client-Id: YOUR_CLIENT_ID" \
-H "CF-Access-Client-Secret: YOUR_CLIENT_SECRET" \
https://reattach.your-domain.com/sessions
サポートが必要ですか? 詳細やトラブルシューティングについてはGitHubリポジトリをご覧ください。