このガイドでは、Discourse で利用可能な各種の読み取り専用モードについて、それらを有効化・無効化する方法、および各モードを使用するべきシナリオを説明します。
必要なユーザーレベル:管理者
Discourse 上で活発なオンラインコミュニティを管理する際、管理者が一時的にユーザーの活動を制限する必要がある場合があります。このような状況には、サーバーメンテナンスの実施、バックアップの促進、サーバーの移行などが含まれます。そのような時期には、ユーザーのアクセスを完全に遮断することなく、フォーラムの活動を制限することが不可欠です。
Discourse では、サイト内のさまざまなタイプの相互作用を一時的に凍結するために、管理者が有効化できるさまざまな読み取り専用モードを提供しています。
このガイドでは、これらのモード、特にそれらを有効化および無効化する方法、また特定のモードが交差する状況への対処法に焦点を当てて探求します。
読み取り専用モードの理解
Discourse は、さまざまな管理ニーズに合わせて調整された 2 つの異なるレベルの読み取り専用モードをサポートしています。これらは以下の通りです:
- 完全な読み取り専用モード
- フォーラム内のすべての書き込み操作を制限し、投稿、コメント、いいねなどのコンテンツの作成や変更をすべてのユーザーから禁止します。
- フォーラムを現在の状態で事実上「凍結」し、ユーザーが既存のコンテンツを読み、ナビゲートできるようにしながら、データベースへの影響を防ぎます。
- 現在のデータベースの状態を維持するため、管理者サイト設定やサイトのカスタマイズの変更を無効にします。
- 一般ユーザーによる新しいフォーラムへのログインを無効にします。管理者は、管理者用メールログインフロー(
/u/admin-login)を使用してログインできます。
- スタッフ書き込み専用モード
- フォーラム内の書き込み操作(投稿、コメント、いいねなど)を一般ユーザーに制限します。一般ユーザーは読み取り専用操作に限定されますが、アカウントへのログインは引き続き可能です。
- 管理者およびモデレーターの活動は通常通り続行されます。管理者はサイト設定を変更でき、スタッフユーザーは投稿、いいね、プロフィール変更などの書き込み操作を実行できます。
これらのモードにより、重要な管理期間中のフォーラムの運用性を柔軟に管理することが可能になります。
読み取り専用モードの有効化・無効化方法
管理者は、異なる読み取り専用モード間の移行を慎重に管理する必要があります。どの読み取り専用モードも有効化する前に、以前にアクティブ化されたものが無効化されていることを確認してください。
完全な読み取り専用モード
Rails コンソール経由
Discourse インストールにアクセスできる場合は、./launcher enter appで Docker コンテナに入り、次に rails cでrails コンソールに入ってから、以下のコマンドを実行するためにDiscourse rails コマンドラインインターフェースを使用してください。
Discourse.enable_readonly_mode(Discourse::USER_READONLY_MODE_KEY)
管理パネル経由
Web インターフェースを介して管理者アクセスがある場合は、Admin > Backups > Enable Read-Only Mode に移動して読み取り専用モードを有効化できます。
読み取り専用モードを無効化するには、以下の rails コマンドを実行してください。
Discourse.disable_readonly_mode(Discourse::USER_READONLY_MODE_KEY)
または、管理パネルを使用して Admin > Backups > Disable Read-Only Mode に移動してください。
スタッフ書き込み専用モード
スタッフ書き込み専用モードの有効化・無効化は、Discourse rails コンソールからのみ行うことができます。サイトが Discourse によってホストされている場合、このモードの有効化または無効化を希望する場合は team@discourse.org までお問い合わせください。
スタッフ書き込み専用モードを有効化するには、以下の rails コンソールコマンドを使用してください。
Discourse.enable_readonly_mode(Discourse::STAFF_WRITES_ONLY_MODE_KEY)
無効化するには:
Discourse.disable_readonly_mode(Discourse::STAFF_WRITES_ONLY_MODE_KEY)
ベストプラクティス
- タイムリーなコミュニケーション: 適切な期待値を設定するために、スケジュールされた読み取り専用期間について事前にコミュニティに通知してください。
- テスト: 重要な操作中にこれらのモードを実装する前に、トラフィックの少ない時間帯にテストを行い、その影響を理解してください。
- ドキュメント: 将来の運用計画を支援するために、各モードがいつ、なぜ有効化または無効化されたかについて詳細な記録を保持してください。
よくある質問 (FAQ)
-
読み取り専用モードの有効化・無効化にどのくらい時間がかかりますか?
- 変更は即座に反映されます。ただし、ユーザー体験は移行期間中のアクションによって若干異なる場合があります。
-
助けて!読み取り専用モードのためにサイトからロックアウトされてしまいました。サイトに再度アクセスするにはどうすればよいですか?
-
discourse/lib/discourse.rb に他の
READ-ONLYモードがリストされていることに気づきましたが、これらのモードは何をするものですか?READONLY_MODE_KEYは主にバックアップとリストアのプロセスに使用され、アプリケーション自体によってトリガーされます。このモードは、Discourse コマンドラインインターフェースからdiscourse enable_readonlyおよびdiscourse disable_readonlyを使用して有効化または無効化することもできます。ただし、このキーはコンテナの再起動後に生存しません。USER_READONLY_MODE_KEYは、管理者が管理インターフェースで読み取り専用ボタンをクリックしたときに使用されます。このキーの特別な点は、ユーザーによって有効化された読み取り専用状態がコンテナの再起動後も維持される必要があるため、期限付きキーとして設定されていないことです。他のキーには TTL(READONLY_MODE_KEYは 60 秒、PG_READONLY_MODE_KEYは 300 秒)が設定されており、アプリが読み取り専用モードで停止しないようにするために、30 秒ごとに期限延長を行うスレッドがあります。PG_READONLY_MODE_KEYおよびPG_FORCE_READONLY_MODE_KEYは PG フェイルオーバーに使用されます。前者は期限付きキーとして設定され、後者は期限なしキーです。

