Difyウェブ公開時のベーシック認証設定ガイド
公開サイトを安全に保つための初心者向けステップバイステップガイド
はじめに:Basic認証とは?
Basic認証は、ウェブサイトにアクセスする際にユーザー名とパスワードの入力を求める最も基本的なアクセス制限方法です。Difyをインターネットに公開する際、不特定多数の人がアクセスできないように保護するために有効です。
- 設定が簡単
- ほとんどのブラウザで対応
- 追加のアプリケーションが不要
準備:始める前に
設定を始める前に、以下の点を確認しましょう:
- サーバーへのSSHアクセス権限があること
- Difyがdocker-composeで動作していること
- 設定変更に備えてバックアップを取得すること
ステップ1:バックアップの取得
1バックアップ用フォルダの作成
まずは、現在の設定のバックアップを保存するためのフォルダを作成します。日付ごとに管理すると後で便利です。
mkdir -p backup_folder/$(date +%F)
2Nginx設定ファイルのバックアップ
Nginxの設定ファイルをバックアップします。
cp dify/docker/nginx/nginx.conf.template backup_folder/$(date +%F)/ cp dify/docker/nginx/conf.d/default.conf backup_folder/$(date +%F)/
3その他の重要ファイルのバックアップ
認証情報ファイルや環境変数ファイルなど、他の重要なファイルもバックアップしておきましょう。
# 認証情報ファイル(既に作成済みの場合) if [ -f dify/docker/nginx/.htpasswd ]; then cp dify/docker/nginx/.htpasswd backup_folder/$(date +%F)/ fi # Docker Composeファイル cp dify/docker/docker-compose.yaml backup_folder/$(date +%F)/ cp dify/docker/docker-compose.override.yaml backup_folder/$(date +%F)/ # 環境変数ファイル if [ -f dify/docker/.env ]; then cp dify/docker/.env backup_folder/$(date +%F)/ fi # SSL証明書(利用している場合) if [ -d dify/docker/nginx/ssl ]; then tar czf backup_folder/ssl-$(date +%F).tgz dify/docker/nginx/ssl fi
ステップ2:Basic認証の設定
1htpasswdコマンドのインストール
パスワードファイルを作成するために必要なツールをインストールします。
sudo apt update sudo apt install -y apache2-utils
2認証情報(.htpasswd)ファイルの作成
アクセスに必要なユーザー名とパスワードを設定します。以下のコマンドで、あなたのユーザー名とあなたのパスワードの部分を自分の設定したいものに変更してください。
printf "あなたのユーザー名:$(openssl passwd -apr1 'あなたのパスワード')\n" > dify/docker/nginx/.htpasswd
例えば、ユーザー名を「admin」、パスワードを「secure123!」に設定する場合:
printf "admin:$(openssl passwd -apr1 'secure123!')\n" > dify/docker/nginx/.htpasswd
ステップ3:Nginx設定ファイルの編集
1Nginx設定ファイルを編集
Nginxの設定ファイルにBasic認証の設定を追加します。お好みのテキストエディタを使用して以下のファイルを編集しましょう。
nano dify/docker/nginx/conf.d/default.conf
2認証設定を追加
ファイル内の location / { ... }
ブロックを見つけて、その中に以下の2行を追加します:
location / { auth_basic "Restricted Area"; auth_basic_user_file /etc/nginx/.htpasswd; proxy_pass http://dify_backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
auth_basic
– ブラウザに表示される認証ダイアログのタイトルです。好きな文字列に変更できます。auth_basic_user_file
– パスワードファイルのパスです。この値は変更しないでください。
ステップ4:Docker Compose設定の更新
1Docker Compose設定ファイルを編集
認証ファイルをコンテナにマウントするために、docker-compose.yamlファイルを編集します。
nano dify/docker/docker-compose.yaml
2ボリュームマウント設定を追加
nginx
サービスのvolumes:
セクションに以下の行を追加します:
services: nginx: # 既存の設定... volumes: # 既存のボリューム設定... - ./nginx/.htpasswd:/etc/nginx/.htpasswd:ro
:ro
はread-only(読み取り専用)を意味します。
ステップ5:設定の反映と確認
1Docker Composeを再起動
変更した設定を反映させるために、Docker Composeサービスを再起動します。
cd /root/dify/docker && docker compose down && docker compose up -d
2Nginx設定の構文チェック(オプション)
設定に問題がないか確認するには、以下のコマンドを実行します。
docker exec $(docker ps -qf "name=nginx") nginx -t
3アクセス確認
ブラウザでDifyのウェブサイトにアクセスして、Basic認証のダイアログが表示されることを確認します。先ほど設定したユーザー名とパスワードを入力してアクセスできることを確認しましょう。
- Docker Composeが正常に再起動できているか
- .htpasswdファイルが正しいパスに存在するか
- Nginx設定ファイルに構文エラーがないか
ステップ6:トラブル発生時のロールバック方法
万が一問題が発生した場合は、バックアップから設定を復元できます。
1バックアップから設定を復元
cp backup_folder/日付/default.conf dify/docker/nginx/conf.d/ cp backup_folder/日付/.htpasswd dify/docker/nginx/ # 必要に応じてdocker-compose.yamlも復元 cp backup_folder/日付/docker-compose.yaml dify/docker/
2Docker Composeを再起動
cd /root/dify/docker && docker compose down && docker compose up -d
まとめと注意点
これで、DifyのウェブサイトにBasic認証が設定され、ユーザー名とパスワードを知っている人だけがアクセスできるようになりました。
- Basic認証は暗号化されていないため、HTTPS(SSL/TLS)と併用することを強く推奨します。
- パスワードは定期的に変更しましょう。
- 強力なパスワードを使用しましょう。
- より高度なセキュリティが必要な場合は、VPNやIP制限などの追加対策も検討してください。