← セットアップガイドに戻る

Cloudflareセットアップ

Cloudflare TunnelとAccessを使用してreattachdへのセキュアなリモートアクセスを設定します。

前提条件: Cloudflareアカウントと、Cloudflareで管理されているドメインが必要です。

概要

このガイドでは2つのコンポーネントについて説明します:

  1. Cloudflare Tunnel - ポートを開放せずにreattachdをインターネットに安全に公開
  2. Cloudflare Access - Service Tokenを使用してトンネルに認証を追加し保護

cloudflaredをインストール

1 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コードを再スキャンする必要があります。独自ドメインで恒久的にセットアップするには、以下に進んでください。

独自ドメインでの恒久的なセットアップ

2 Cloudflareで認証
cloudflared tunnel login

ブラウザが開き、Cloudflareアカウントに対してcloudflaredを認証・承認します。

3 トンネルを作成
cloudflared tunnel create reattach

トンネルが作成され、~/.cloudflared/<TUNNEL_ID>.jsonに認証情報ファイルが生成されます。

4 トンネルを設定

~/.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_USERNAMETUNNEL_IDyour-domain.comを実際の値に置き換えてください。

5 DNSレコードを作成
cloudflared tunnel route dns reattach reattach.your-domain.com

トンネルを指すCNAMEレコードが作成されます。

6 トンネルを実行

トンネルをテスト:

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アプリが対話的なログインなしで認証できます。

1 Accessアプリケーションを作成
  1. Cloudflare Zero Trust Dashboardにアクセス
  2. AccessApplicationsに移動
  3. Add an applicationをクリック
  4. Self-hostedを選択
  5. アプリケーションを設定:
    • Application name: Reattach
    • Session duration: 24 hours(またはお好みで)
    • Application domain: reattach.your-domain.com
2 Service Tokenを作成
  1. Zero Trust DashboardでAccessService Authに移動
  2. Create Service Tokenをクリック
  3. 名前を入力(例:「Reattach iOS」)
  4. トークンの有効期間を設定(例:1年)
  5. Generate tokenをクリック

重要: CF-Access-Client-IdCF-Access-Client-Secretの両方をすぐにコピーしてください。シークレットは一度しか表示されません!

2つの値が取得できます:

CF-Access-Client-Id: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.access
CF-Access-Client-Secret: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
3 Accessポリシーを作成
  1. AccessApplicationsでReattachアプリケーションに戻る
  2. アプリケーションをクリックして編集
  3. Policiesタブに移動
  4. ポリシーを追加:
    • Policy name: Service Token Access
    • Action: Service Auth
    • Include: Service Token → 作成したトークンを選択
  5. ポリシーを保存
4 iOSアプリを設定

Reattach iOSアプリで:

  1. サーバー設定に移動
  2. Service Tokenの認証情報を入力:
    • Client ID: CF-Access-Client-Id
    • Client Secret: CF-Access-Client-Secret
  3. 設定を保存

アプリはすべての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リポジトリをご覧ください。