
【絶対に失敗しない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をデプロイする時の様子です📺。動画の中で利用したコマンドは、
— sangmin.eth | Dify Ambassador (@gijigae) August 8, 2024
①curl -fsSL https://t.co/U5bnDaNlD6 -o https://t.co/4AKp7RkRwr
②sudo ./install-dify.sh email domain
①でスクリプトをコピーし、②でメールアドレスとドメイン名を指定して実行するだけです😇。 https://t.co/QElvUl3fre pic.twitter.com/Wdaz0NZ8jA
絶対に失敗しない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は今後、動詞のように使われるほど普及されていくと思っています。未来で待っている自分のため、始めませんか?
Difyはもはや動詞として使われるとみている。
— sangmin.eth | Dify Ambassador (@gijigae) May 19, 2024
▼Dify(品詞:動詞)
面倒なことを複数のAIやツールを使って解決すること😇
AIの進化で「面倒なことはDifyにやらせよう(Dify it!)」という流れが確実に定着していく。始めるのなら「今」です。#Dify部 https://t.co/kSHmSFQtJY pic.twitter.com/lmcLak6r0l
8 まとめ
Linuxファイルを操作した経験がある方であれば20分足らずでHTTPSの設定が終わる。HTTPSのサーバーが構築できれば本番環境へのリリースにも一歩近づくかと思います。ぜひチャレンジしてみてください。あと、Linuxの操作に慣れますとDifyをカスタマイズする時も大変役立ちますので、超オススメです。
設定の中で何かご不明な点などがあれば、Xで「#Dify部」のタグをつけて教えてください。