きっかけ
ゴールデンウイークの間にDifyが話題になっていることを知っていましたが、休暇中だったので手を付けられませんでした。Difyバージョン0.6.8がGPT-4oをサポートしていると知り、試してみることにしました。
環境
- OS: Windows 10
- Difyバージョン: 0.6.6 → 0.6.8
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.crt
はyour_cert_file.cer
、server.key
はyour_cert_key.key
と読み替えて設定しました。
これでブラウザで警告は出ていますが、マイクの機能が使えていることは確認できました。
以上が、Difyをローカル環境でDockerを使用して構築し、HTTPS対応する手順のまとめです。何かの参考になれば幸いです。