保存版!Amazon Lightsailで Dify 0.6.14 をHTTPSデプロイ
1. はじめに
Difyは、オープンソースのAIアプリケーション開発プラットフォームです。誰でもノーコードで、チャットボット・AIアシスタントや要約・分析ツール、画像生成アプリ、計算ツールなど、様々なAIアプリケーションを作成することができます。近年、AI技術の進歩とニーズの高まりにより、AIアプリケーションの開発が注目されています。Difyは、専門知識がなくても、手軽にAIアプリケーションを開発できるツールとして人気を集めています。
そんなDifyをインターネット上で公開するには、セキュリティ対策が必須です。しかし、Difyのバージョン0.6.14以降では少し仕様が変わっており、HTTPSデプロイの手順がネット上で見当たらなかったので、まとめてみました。
本記事では、Lightsailインスタンスのセットアップから、独自ドメインの取得、SSL証明書の発行まで、手順を詳しく解説します。
2. Amazon Lightsailでデプロイする
Lightsailは、Difyをデプロイし、安全かつ快適に運用するための最適なプラットフォームです。簡単で迅速な導入、拡張性の高いインフラ、高い信頼性と可用性、グローバルな展開、手頃な価格など、多くのメリットを提供します。
2.1. Lightsailインスタンスを作成する
Amazon Lightsailにて画像のようにインスタンスを作成します。
設計図はUbuntu 22.04 LTSを選択してください。他の設計図だと本記事の手順通りに進めません。
また、サイズは2GBを選択してください。1GBだとメモリ不足で起動しないことがあります。
2.2. スクリプトを用いてDifyをインストールする
SSHを使用してインスタンスに接続します。
以下のコマンドを入力してください。
curl -fsSL <https://gist.githubusercontent.com/gijigae/50f400a5f91a39fbf2f0d0a652a9c409/raw/install-dify.sh> -o install-dify.sh
sudo sh install-dify.sh
5分程度待つとDifyが起動します。
2.3. Difyの起動を確認する
インスタンス画面でパブリックIPアドレスを確認し、ブラウザで以下のURLにアクセスします。
http://<パブリックIP>/install
Difyの画面が表示されれば、起動に成功しています。プロトコルが https
ではなく、 http
であることに注意してください。
3. HTTPS化する
DifyアプリをHTTPS化するメリットは、セキュリティ強化、信頼性の向上、SEO対策等が挙げられます。Difyアプリの安全性を高め、ユーザーの信頼を獲得し、より多くの人に利用してもらうためには、HTTPS化が不可欠です。
3.1. 独自ドメインを取得する
「ドメインとDNS」タブの「ドメインの登録」をクリックし、取得したいドメインを入力してください。
自動更新の設定や連絡先情報を入力し、ドメインを登録します。
3.2. 静的IPを作る
作成したインスタンスの「ネットワーキング」タブをクリックし、「静的IPをアタッチする」をクリックします。
静的IPを入力し、「作成およびアタッチ」をクリックしてください。
3.3. HTTPSのポートを許可する
「ルールを追加」をクリックし、HTTPSのルールを作成してください。
3.4. 独自ドメインを静的IPに割りあてる
「ドメインとDNS」タブの「DNSゾーンの作成」をクリックし、独自ドメインを選択します。
「DNSゾーンの作成」→「割り当て」→作成したドメイン名を選択→「割り当てる」をクリックしてください。
3.5. SSL証明書を発行する
「インスタンス」タブの「SSHを使用して接続」をクリックしてください。
Let's Encrypt 証明書のインストールのために、 Certbot パッケージを Lightsail インスタンスにインストールするにはどうすればよいですか? を参考にcerbotをインストールします。
今回(Ubuntu 22.04 LTS)の場合は以下のコマンドです。
sudo snap install core;
sudo snap refresh core;
sudo snap install --classic certbot
スタンダード Let's Encrypt SSL 証明書を Lightsail インスタンスにインストールするにはどうすればよいですか? を参考にSSL証明書を取得する
今回の場合は以下のコマンドです。
sudo service apache2 stop
sudo certbot certonly --standalone -d <独自ドメイン>
表示された証明書とキーのパスは以下の手順で使うため、メモしておいてください。
証明書とキーをシンボリックリンクで参照させます。
sudo ln -s /etc/letsencrypt/live/<独自ドメイン>/fullchain.pem ~/dify/docker/nginx/ssl/fullchain.pem
sudo ln -s /etc/letsencrypt/live/<独自ドメイン>/privkey.pem ~/dify/docker/nginx/ssl/privkey.pem
3.6. .envファイルを作成する
~/dify/docker/.env.example をコピーして.envファイルを作成します。
cp ~/dify/docker/.env.example ~/dify/docker/.env
.envファイルを編集するため、vimを起動します。
sudo vim .env
577行目あたり(Dify 0.6.14の場合)を以下の内容に編集します。
# ------------------------------
# Environment Variables for Nginx reverse proxy
# ------------------------------
NGINX_SERVER_NAME=<独自ドメイン>
NGINX_HTTPS_ENABLED=true # ←trueに設定
# HTTP port
NGINX_PORT=80
# SSL settings are only applied when HTTPS_ENABLED is true
NGINX_SSL_PORT=443
# If HTTPS_ENABLED is true, you're required to add your own SSL certificates/keys to the `/nginx/ssl` directory
# and modify the env vars below accordingly.
NGINX_SSL_CERT_FILENAME=fullchain.pem # ←先ほどコピーした証明書ファイル名
NGINX_SSL_CERT_KEY_FILENAME=privkey.pem # ←先ほどコピーした暗号キーファイル名
NGINX_SSL_PROTOCOLS=TLSv1.1 TLSv1.2 TLSv1.3
保存して終了します。
3.7. Dockerを再起動
Dcokerを再起動し、HTTPS化に成功していることを確認します。
sudo docker compose down
sudo docker compose up
https://<独自ドメイン>/install
にアクセスできれば、HTTPS化成功です。
4. まとめ
DifyをAmazon LightsailでHTTPSデプロイする方法を詳しく説明しました。Difyは、AIアプリケーションを簡単に開発できる強力なツールです。この記事が、皆様のDify活用のお役に立てば幸いです。
Discussion