DifyをローカルでDockerで構築しHTTPSまでやってみた

きっかけ

ゴールデンウイークの間にDifyが話題になっていることを知っていましたが、休暇中だったので手を付けられませんでした。Difyバージョン0.6.8がGPT-4oをサポートしていると知り、試してみることにしました。

環境

  • OS: Windows 10
  • Difyバージョン: 0.6.6 → 0.6.8

Difyのインストール

Difyのインストールは公式ドキュメントを参考にしました。以下のリンクから詳細を確認できます。

Dify公式ドキュメント

Difyの構築でつまづいたこと

① データベースのエラー

Windows環境では、docker-compose.yamlのデータベース設定でエラーが発生することがあります。以下のように設定を変更しました。

db:
image: postgres:15-alpine
restart: always
environment:
PGUSER: postgres
POSTGRES_PASSWORD: difyai123456
POSTGRES_DB: dify
PGDATA: /var/lib/postgresql/data/pgdata
volumes:
# - ./volumes/db/data:/var/lib/postgresql/data # ここを変更
- pgdata:/var/lib/postgresql/data # ここを変更
...

volumes: # ここを追加
pgdata: # ここを追加

② http://localhost/installがいつまでたっても終わらない

この問題を解決するために、以下の2つの方法を試しました。どちらが効果的だったかは不明です。

  • Docker Desktopからメモリを4GBから6GBに変更
  • Dify 0.6.6でインストールしてから0.6.8にアップデート

ポート80は別で使用していたため、他のポートに変更

以下のようにdocker-compose.yamlの設定を変更しました。

nginx:
image: nginx:latest
restart: always
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
- ./nginx/proxy.conf:/etc/nginx/proxy.conf
- ./nginx/conf.d:/etc/nginx/conf.d
- ./nginx/ssl:/etc/ssl
depends_on:
- api
- web
ports:
- "8080:80" # ここを変更
# - "443:443"

ポート変更の際の注意点

ポートを変更する際は、既存のサービスが使用しているポートと競合しないように注意が必要です。また、適切なポートフォワーディングを設定することも重要です。

HTTPSにする理由

社内サーバーのため、httpのままでも良いかと思っていましたが、ブラウザでのマイク機能使用時にエラーが発生するため、HTTPSを試すことにしました。ちなみにDockerに関わらず、HTTPS設定は初めてやりました。

HTTPSにする手順

以下のようにdocker-compose.yamlを変更し、HTTPSを有効にしました。

nginx:
image: nginx:latest
restart: always
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
- ./nginx/proxy.conf:/etc/nginx/proxy.conf
- ./nginx/conf.d:/etc/nginx/conf.d
- ./nginx/ssl:/etc/ssl
depends_on:
- api
- web
ports:
- "8080:80"
- "443:443" # ここのコメントアウトを解除

さらに、docker/nginx/conf.dディレクトリの設定ファイルのコメントアウトを解除し、必要な行を追加しました。

# If you want to support HTTPS, please uncomment the code snippet below
listen 443 ssl;
ssl_certificate ./../ssl/your_cert_file.cer;
ssl_certificate_key ./../ssl/your_cert_key.key;
ssl_password_file ./../ssl/server.password; # ここは追加
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;

OpenSSLのインストール

OpenSSLのインストールと使い方は以下のサイトを参考にしました。

server.crtyour_cert_file.cerserver.keyyour_cert_key.keyと読み替えて設定しました。

これでブラウザで警告は出ていますが、マイクの機能が使えていることは確認できました。

以上が、Difyをローカル環境でDockerを使用して構築し、HTTPS対応する手順のまとめです。何かの参考になれば幸いです。

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA