見出し画像

【絶対に失敗しないDify】HTTPS接続の編

こんにちは、Dify公式アンバサダーのサンミンです。

【主なアップデート】
(2024.08.11)SERVICE_API_URL and APP_WEB_URLのHTTPS対応
(2024.08.08)Dify v.0.6.16対応+自動化

0  はじめに

追記:2024.08.11】Public URLとService API EndpointがHTTPSでアクセスできるように修正。

画像

【追記:2024.08.08】Dify v.0.6.16でCertbotサービスが追加され、HTTPSの設定が自動化できるようになりました。該当マシンにログインし、下記2つのコマンドを実行していただきますと4分程度でHTTPS設定済みのDifyが使えます。

curl -fsSL https://bit.ly/3YHdSo0 -o install-dify.sh
sudo sh ./install-dify.sh email domain

※重要:2つ目のコマンドを実行する際に、emailとdomainはご自分のメールアドレスとドメイン名に変更してください。また、Xで投稿した2つ目のコマンドには"sh"が抜けています。上述したコマンドで実行してください。




絶対に失敗しないDifyデプロイの手順に続け、今回は絶対に失敗しないDify第2弾、その名は「HTTPSの接続編」です。

Difyを本番環境で運用するためにはHTTPSの設定は必須。上記の動画で紹介している手順を参考にすれば、20分足らずでHTTPS経由でアクセスできるDifyのサーバーが構築できます。

※重要:動画はこちらのnoteを読み終えてから見ることをお勧めしたいです

画像

1  Pre-requisite

①HTTPでアクセスできるDifyのサーバー
②Static IPアドレスの発行
③443ポートの設定
④ドメイン名の取得
⑤IPとドメイン名の紐付け
⑥Linuxのファイルが変更できること

①から③まではAWS Lightsailから設定できます。すべての設定が揃いますとドメイン名からHTTP経由でDifyへアクセスできるはずです。

動画の中では1:14の箇所でhttp://test.choimirai.comが「Not Secure」な状態でアクセスできています。

画像

2  CertbotのインストールとSSLの発行

Difyがインストールされているサーバーにアクセスし、Dockerのコンテナを止めた上で、下記のコマンドを実行してください。

curl -fsSL https://gist.githubusercontent.com/gijigae/5db9f4aa1250ed5d627f138603cda6c3/raw/cccf1694511a8b3e21b6ac370630a56033565cf9/certbot.sh -o certbot.sh

sudo sh certbot.sh test.choimirai.com

SSL証明書を発行してもらう方法は多数ありますが、こちらでは無料の「Let's Encrypt」のサービスを利用します。

コマンドを実行しますと、letsencryptを使ってSSL証明書を発行するcertbotをインストールし、「test.choimirai.com」ドメインに対し証明書を発行してくれます。

※重要:test.choimirai.comの箇所はご自分のドメイン名に変更が必要です

証明書が発行される様子は動画の3:20の箇所から確認できます。

3  443ポートのプロセスを殺す😱

CertbotでSSLの証明書を発行しますと自動的にnginxのサーバーが443のポートで立ち上がります。この状態だと後で、DifyのDockerを起動させるとき怒られる。問題を解決するため、443のポートを利用しているプロセスを下記のコマンドで特定してください。

sudo lsof -i :443
画像

プロセスのID(PID)が特定できましたら、次のコマンドで該当プロセスを殺してください😱😅。

sudo kill -9 pid

4  docker-compose.yamlの修正

dockerのディレクトリにある「docker-compose.yaml」ファイルでは2箇所の修正が必要です。

① "- /etc/letsencrypt:/etc/letsencrypt" をnginxのボリューム*としてマウント

※ボリュームとは、データを永続化できる場所のこと

②443のポート(HTTPS)からアクセスできるよう - "443:443" 行の先頭にあった「#」を削除

画像

こちらの操作は動画の5:05から確認できます。

5  conf.d/default.confファイルの変更

docker/nginx/conf.d/default.confファイルにはすでにHTTPS設定に必要な項目が表示されています。コメントされている箇所の先頭にある「#」を削除し、letsencryptの証明書とPrivate Keyをコピーすれば終了です。下記が修正後の一例です。「test.choimirai.com」をご自分のドメイン名に変更してください。

※重要:「test.choimirai.com」をご自分のドメイン名に変更

# If you want to support HTTPS, please uncomment the code snippet below
listen 443 ssl;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_certificate /etc/letsencrypt/live/test.choimirai.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/test.choimirai.com/privkey.pem;

これで修正は完了です。おめでとうございます。

画像

6  Dockerコンテナを立ち上げる

あと残っているのはDockerのコンテナを立ち上げるのみ。

sudo docker compose up -d

すべてのコンテナが正常に起動しましたら、HTTPSからDifyのサーバーへアクセスできます。

一連の流れはこちらの動画を参考にしてください。

7  Dify 101の宣伝:絶対失敗しないDifyの使い方を身につける

Dify 101は、Difyの公式アンバサダーと一緒にDifyの基礎から始め、RAGの実装やクラウドでのデプロイまで体験できるプログラムです。

Difyは今後、動詞のように使われるほど普及されていくと思っています。未来で待っている自分のため、始めませんか?

8  まとめ

Linuxファイルを操作した経験がある方であれば20分足らずでHTTPSの設定が終わる。HTTPSのサーバーが構築できれば本番環境へのリリースにも一歩近づくかと思います。ぜひチャレンジしてみてください。あと、Linuxの操作に慣れますとDifyをカスタマイズする時も大変役立ちますので、超オススメです。

設定の中で何かご不明な点などがあれば、Xで「#Dify部」のタグをつけて教えてください。

この記事が気に入ったらサポートをしてみませんか?

ピックアップされています

これからDifyの話をします…

  • 9本

コメント

コメントを投稿するには、 ログイン または 会員登録 をする必要があります。
CEO & Founder at Choimirai Company。The first official Dify Ambassador in Japan.
【絶対に失敗しないDify】HTTPS接続の編|Sangmin Ahn
word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word

mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1