😎

【Dify・Cloudflare・GitHub】Quick TunnelsでDifyを公開しGitHubから自動でRAGに取り込んでみた

に公開

はじめに

今回、ローカルで立ち上げたDifyにGiHubで管理している記事(.mdファイル)をRAGのソースとしてアップロードをする実装を行いました。
localhost:80で立ち上がる為、GiHubからPOSTすることができませんでした。
そこで、Cloudflare Quick Tunnelsを使用することで、URLを取得することができ、GiHubからリクエストを送ることができるようになります。
その実装方法をご紹介します。

前提

  • Difyがローカルで立ち上がるようになっていること
  • GitHubにファイルが存在していること

Dify側の設定

GitHubと連携するため、

  • APIキー
  • ナレッジdatasetID
  • API サーバーURL(こちらはCloudflare Quick Tunnelsを使用します)

格納するためのナレッジベースを作成

一旦、空のナレッジベースを作成しておきましょう。

ナレッジのAPIキーの取得

以下の箇所から、APIキーを作成します。


datasetIDの取得

こちらは、先ほど作成したナレッジベースのURLに記載があります。

http://localhost/datasets/{ここがdatasetIDです}/documents

これでDify側の設定は完了です。

Cloudflare Quick Tunnelsの設定

Cloudflare Quick Tunnelsとは

Cloudflare Quick Tunnels は、ローカルのパソコンやサーバーで動いているサービスを、インターネットに一時的に公開できる仕組みです。
専用ツール cloudflared を実行すると、Cloudflare が安全な通り道(トンネル)を作り、ランダムなURLを発行してくれます。
この方法ならポート開放やDNSの設定は不要で、すぐに外部からアクセスできるようになります。
アカウントの設定も必要ありません。

https://qiita.com/dekoboko/items/5c209f4a524242d8a996
https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/do-more-with-tunnels/trycloudflare/
https://zenn.dev/takajun/articles/fbd783e459c722

Cloudflaredをインストール

Cloudflaredをインストールします。
https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/downloads/#linux

# macOS
brew install cloudflared

# Windows
winget install --id Cloudflare.cloudflared

トンネルを開始

cloudflared tunnel --url http://localhost:80

# 出力例:
# 2024-01-01 12:00:00 INF +------------------------------------------------------------+
# 2024-01-01 12:00:00 INF |  Your quick tunnel has been created! Visit it at:        |
# 2024-01-01 12:00:00 INF |  https://random-words-here.trycloudflare.com             |
# 2024-01-01 12:00:00 INF +------------------------------------------------------------+

この出力されたURLを使用します。

GitHubの設定

環境変数の設定

該当リポジトリのsettingSecrets and variablesActionsを開きます。
Repository secretsに環境変数として、先ほど入手した 下記を入力します。

  • APIキー
  • ナレッジdatasetID
  • API サーバーURL(Cloudflare Quick Tunnelsで取得したURL)

コードに設定

Actionsタブに移動します。

New workflowを押下します。

set up a workflow yourself を押下して、独自のコードを入力します。

以下のコードは、接続テストのためのコードです。

yml
name: Test Dify Connection

on:
  workflow_dispatch:

jobs:
  test-connection:
    runs-on: ubuntu-latest
    
    steps:
    - name: Test Dify API Connection
      env:
        DIFY_API_KEY: ${{ secrets.DIFY_API_KEY }}
        DIFY_API_URL: ${{ secrets.DIFY_API_URL }}
        DIFY_DATASET_ID: ${{ secrets.DIFY_DATASET_ID }}
      run: |
        echo "🔍 Testing Dify API connection..."
        
        # API接続テスト
        response=$(curl -s -o /dev/null -w "%{http_code}" \
          -H "Authorization: Bearer $DIFY_API_KEY" \
          "$DIFY_API_URL/datasets/$DIFY_DATASET_ID")
        
        if [ $response -eq 200 ]; then
          echo "✅ Successfully connected to Dify API!"
          
          # Dataset情報を取得
          curl -s -H "Authorization: Bearer $DIFY_API_KEY" \
            "$DIFY_API_URL/datasets/$DIFY_DATASET_ID" | \
            python3 -m json.tool
        else
          echo "❌ Failed to connect. HTTP Status: $response"
          exit 1
        fi

実行

APIが通るかGitHub上でテストしてみましょう。
Run workflowを押下します。
緑のマークがつけば成功です!


おわりに

今回は、Cloudflare Quick Tunnels を使ってローカルで動かしている Dify を外部からアクセス可能にし、GitHub のファイルを自動で取り込む流れをご紹介しました。
Quick Tunnels はアカウント不要・設定最小限で使えるため、開発中の検証や短期的な外部接続にはとても便利です。
ローカル開発の効率化やデモ環境構築の一手段として、ぜひ活用してみてください。

GitHubで編集を提案

Discussion