見出し画像

古いMacbook Pro(2018)をCloudflare TunnelでDifyサーバにする

古い端末もったいないお化けを成仏させよう。

普段、文書作成系のタスクにはDifyを愛用している。このnoteの記事だって、Difyで作ったアプリに編集をお願いすることが多い。

仕事では、さくらのクラウド上に構築されたオンプレ環境を使っているから特に不便はないんだけど、プライベートでは、Macのローカル環境でDifyを立ち上げて使っている。
当然、立ち上げたMacでしか使えない。これが、地味に不便。
スマホやiPad、それに他のPCからもアクセスしたい。
でも、レンタルサーバーやクラウドサービスを使うのは、ちょっと大げさだし、費用もかかる。

そこで、ふと目に留まったのが、部屋の隅で眠っていたMacbook Pro(2018)だった。「こいつを使えば、なんとかなるんじゃないか?」

そう、この古いMacでDifyを立ち上げて、Cloudflare Tunnel経由で外部からアクセスできるようにすればいい。思い立ったが吉日、早速やってみることにした。

Cloudflare Tunnelとは

Cloudflare Tunnelは、ざっくり言うと、Webサーバを安全にインターネットに公開できる仕組みのことだ。

提供元のCloudflareはWebサイトを高速化したり、セキュリティを高めたりするサービスを提供している会社で、ぼくは自分のドメインをCloudflareに登録してある。
Cloudflare Tunnelは、端末にインストールした「cloudflared」というプログラムで、端末とCloudflareのネットワークとの間にトンネルを確立させる。
そうすると、外からはCloudflareのエッジサーバーにアクセスしてるように見えるんだけど、実際には自宅のMacに繋がるっていうわけ。
セキュリティ面も、Cloudflareがしっかり守ってくれるから安心だ。

やってみる

ローカルDify環境の構築方法については以前Zennに書いたためここでは省略。

1. Cloudflare Tunnelのインストールと設定

まずは、MacにCloudflare Tunnel (cloudflared) をインストールする。Homebrewを使えば簡単だ。

$ brew install cloudflare/cloudflare/cloudflared

次に、Cloudflareアカウントにログインする。

$ cloudflared tunnel login

コマンドを実行するとブラウザが開くのでCloudflareにログインし、トンネルで使うドメインを選択する。

Cloudflareに登録済のドメインが表示される

認証が完了したら、トンネルを作成する。

$ cloudflared tunnel create <トンネルの名前>

<トンネルの名前> は好きな名前でOK。例: my-dify
トンネルを作成すると、トンネルのIDと設定ファイルの場所が表示される。
このIDは後で使うから、メモしておくのを忘れずに。

次に ~/.cloudflared/ にconfig.ymlファイルを作成して、トンネルの設定を行う。

tunnel: <トンネルのID>
credentials-file: /Users/<ユーザー名>/.cloudflared/<トンネルのID>.json

ingress:
  - hostname: <サブドメイン>.<ドメイン>
    service: http://localhost
  - service: http_status:404

<トンネルのID>: さっきメモしたトンネルID
<あなたのユーザー名>: Macのユーザー名
<サブドメイン>.<あなたのドメイン>: アクセスしたいサブドメインとドメイン(例: my-dify.example.com)

これで設定は完了。

あとは、docker-compose up -dでdifyを起動し、cloudflared tunnel run コマンドを実行する。

$ docker-compose up -d
$ cloudflared tunnel run <トンネルの名前>

少し待つと、hostnameに設定したドメインでDifyにアクセスできるようになる。

動作確認

実際に設定したURLにアクセスしてみる。

ちゃんとアクセスできた。

スマホからもアクセスしてみる。こちらも問題なし。

こうして、ぼくは眠っていた古いMacを有効活用して、どこからでもDifyにアクセスできる環境を手に入れた。

おまけ

HDMIダミープラグを使うと、Macbookの画面を閉じても起動したままにできる。地味に便利なのでおすすめ。


いいなと思ったら応援しよう!