DiscourseサイトへのアクセスをHTTP Basic Authenticationで制限する

Discourse インスタンスへの一般公開をまだ望まない場合があります。例えば、移行のためのステージングサイトを作成しているときなどです。

NOTE: 最近、基本認証でいくつかの問題が発生しました。一部の静的アセットが読み込まれないことがありました。app.ymlenv セクションに DISCOURSE_LOGIN_REQUIRED: true を追加して、サイトを login_required に設定する方が簡単かもしれません。

以下の設定により、すべての訪問者に対して共通の、ユーザー名とパスワードの入力を求める簡単なブラウザ確認ダイアログが表示され、サイトにアクセスする前にこれが必須となります。

:information_source: 注:ユーザーは通常の Discourse の登録とログインを行う必要があります。

基本認証の資格情報

暗号化されたパスワードの生成

htpasswd -bn =username= =password=

注:これには htpasswd が必要です。Ubuntu/Debian では apache2-utils パッケージに含まれています。htpasswd がインストールされた別のマシンにアクセスできる場合は、そこで実行することもできます。検索エンジンからのアクセスを遮断することが目的のみであれば、ここに示すサンプルパスワードを使用することに問題はありません。

暗号化されたユーザー名/パスワードをここに記述

app.yml に追加

# 基本認証
  after_bundle_exec:
    - replace:
       filename: "/etc/nginx/conf.d/discourse.conf"
       from: "# auth_basic on"
       to: "auth_basic on"
    - replace:
       filename: "/etc/nginx/conf.d/discourse.conf"
       from: "# auth_basic_user_file /etc/nginx/htpasswd"
       to: "auth_basic_user_file /etc/nginx/htpasswd"
    - replace:
       filename: "/etc/nginx/conf.d/discourse.conf"
       from: "location = /srv/status {"
       to: "location = /srv/status {
           auth_basic off;"
    - file:
       path: "/etc/nginx/htpasswd"
       contents: |
         =auth_string=    

after_bundle_exec セクションは、Discourse コンテナ内の nginx の設定を変更します。本番環境に公開する準備ができたら、このセクションを削除して再構築するだけです。

「いいね!」 14