
言語 🇯🇵 日本語
背景
導入
展開
アーキテクチャ
インストールと統合
セキュリティのヒント
オンプレミス
FastComments をオンプレミスでホストする
FastComments はデプロイに関していくつかのソリューションを提供します。最も一般的なのは、当社が アプリケーションをお客様のためにホストする場合です。
しかし、当社は一部のお客様が情報をクラウドに保存できず、かつ すべてのデータをオンプレミスでホストする必要があることを理解しています。
このドキュメントはそのユースケースを扱います。
含まれる内容 
FastComments On Prem により、すべてのモデレーションおよび管理ツールを含む当社のライブコメントソリューションを、 御社のハードウェア上にデプロイできます。
これは、データを御社が管理できることを意味し、コメントシステムを社内LANや企業ネットワークに限定することができます。
はじめに 
FastComments On Prem の導入を開始するには、お問い合わせください。
セットアップが完了したら、ライセンスページからいつでも最新の docker image をダウンロードできます。
インスタンス 
必要なコンポーネント
On-Prem の場合、FastComments はアプリケーションサーバーとデータベースだけで構成されています。デプロイを簡素化しており、他のコンポーネントを追加することなく、アプリケーションがすべてのトラフィックを直接処理できます。
アプリケーションサーバーは Docker イメージとして提供されており、任意のコンテナ管理ソリューションでデプロイできます。
データベースである MongoDB は、セルフホストでも、AWS DocumentDB や MongoDB Atlas などの他のプロバイダーによるホスティングでも利用できます。
FastComments は現在 MongoDB 7 でテストされていますが、デプロイを容易にするため、DocumentDB 互換性も目指しています。
インスタンスサイズ
FastComments はかなり最適化されており、低い P99 を維持するためにアプリケーション自体に大型マシンを必要としないことがわかるでしょう。
すべてのバッチジョブおよび cron ジョブは、総メモリ使用量を抑えるためにストリーミングを使用します。
以下のアプリケーションサーバーおよびデータベースの表が、サイジングの参考になります。
アプリケーションサーバーインスタンス
| 同時ユーザー数 | クラスター合計 CPU | クラスター合計メモリ |
|---|---|---|
| 100 | 1 | 256mb |
| 1K | 2 | 512mb |
| 10K | 8 | 1gb |
| 100K | 32 | 8gb |
| 1M | 64 | 64gb |
例えば、1 コアで毎秒約 100 のコメントスレッドを処理する場合でも、RSS は通常 250mb を超えることはほとんどありません。
データベースサーバーインスタンス
データベースのサイジングは、ワーキングセットサイズ(ある時点でアクセスするデータ量)と同時リクエスト数によって異なります。
FastComments は MongoDB に比較的優しい作りになっており、ホットなクエリではインデックスヒントやストリーミングカーソルを使用し、さまざまな箇所で同時実行数の制限を設けることで、下流システムへの過負荷を防いでいます。
以下は、データベースインスタンスサイズの一般的なガイドラインです。これはクラスター全体のリソースではなく、__1 インスタンスあたり__の値であることに注意してください。
| 同時ユーザー数 | 保存コメント数 | インスタンスあたり CPU | インスタンスあたりメモリ |
|---|---|---|---|
| 100 | 1k | 1 | 256mb |
| 1K | 5k | 2 | 512mb |
| 10K | 100k | 8 | 2gb |
| 100K | 500k | 16 | 8gb |
| 1M | 5M | 32 | 32gb |
上記の表は控えめな推定値です。実際の要件は、お客様の特定の構成(ページサイズ、コメント量など)によって異なる場合があります。
設定 
FastCommentsは設定に環境変数を利用します。以下のリストは、On-Premに関連するサポート対象のすべての変数を示したものです。
| 変数 | デフォルト | 説明 | 必須 | 例または有効な値 |
|---|---|---|---|---|
| NODE_ENV | 環境の種類。 | はい | production, dev | |
| MONGO_URI | DB接続URI。 | はい | ||
| MONGO_ENABLE_SSL | false | データベースへの接続にSSLを使用することを有効にします。 | いいえ | true, false |
| MONGO_ENABLE_SSL_VALIDATE | false | Mongoへの接続時にCAに対して証明書を検証することを有効にします。 | いいえ | true, false |
| MONGO_SSL_CA | Mongo SSL CA pemファイル。 | いいえ | /path/to/some-cert.pem | |
| ADMIN_NOTIFICATIONS_EMAIL | システムに関する重要な通知の送信先メールアドレス。 | いいえ | admin-group@bigcorp.com | |
| IP_HASH_SALT | IPアドレスをハッシュ化するためのソルト。 | はい | ||
| SESSION_SECRET | セッションの署名に使用されるキー。 | はい | ||
| SESSION_STORE_SECRET | ストレージ内のセッションの署名/ハッシュに使用されるキー。SESSION_SECRETとは異なる値である必要があります。 | はい | ||
| HOSTNAME | FastCommentsがデプロイされるホスト名(管理ダッシュボードなど)。ポートやプロトコルは含めないでください。 | はい | example.com | |
| HOST_ADDR | FastCommentsがデプロイされるアクセス可能なURI(管理ダッシュボードなど)。 | はい | https://example.com | |
| EMAIL_CONFIG_PATH | メール設定(SMTP、ドメイン/プロバイダーのマッピングなど)が置かれているローカルファイルシステム上のパス。 | はい | /my/config.json | |
| EMAIL_DEFAULT_FROM_NAME | FastComments Robot | メールの「From Name」ヘッダー。 | いいえ | My Company Name |
| EMAIL_DEFAULT_FOOTER_LOGO | /images/logo-32-2020-01.png | メールフッターのロゴ。 | いいえ | https://exmaple.com/footer.png |
| EMAIL_DEFAULT_TRANSPORT | EMAIL_CONFIG_PATH内の「defaultTransport」の上書き。同じ設定ファイルを異なる環境にデプロイする場合に便利です。 | いいえ | myTransportName | |
| ON_PREM_TENANT_ID | fastcomments.com上のアカウントのID。ライセンスキーの登録に使用されます。 | いいえ | ||
| ON_PREM_LICENSE_KEY | On-Premライセンスキー。 | いいえ | ||
| GIPHY_API_KEY | Giphy APIキー。指定しない場合は、gifピッカーを無効にする設定ルールを作成する必要があります。 | いいえ | ||
| GIPHY_DEFAULT_RATING | pg | giphy統合に使用されます。ウィジェットのカスタマイズルールで上書きすることもできます。 | いいえ | g, pg, pg-13, r |
| OPENAI_SECRET_KEY | オプションのGPTベースのスパム検出など、openaiを利用した機能に使用されます。 | いいえ | ||
| CDN_HOST_ADDR | アセットの取得元となるホスト名。デフォルトはHOSTNAMEの値です。 | いいえ | example.com | |
| LARGE_FILE_HOST_ADDR | 大きなファイル(エクスポートなど)の取得元となるホスト名。デフォルトはCDN_HOST_ADDRの値です。 | いいえ | example.com | |
| LARGE_FILE_LOCATION_TYPE | local_disk | エクスポートなどの大きなファイルの保存先。 | いいえ | local_disk, s3 |
| FROM_EMAIL_HOST | メールの送信元となるホスト名。 | いいえ | example.com | |
| COOKIE_ID | fastcomments.sid | fastcommentsクッキーの名前。 | いいえ | |
| COOKIE_HOSTNAME | .fastcomments.com | クッキーの「hostname」フィールドの値。先頭にドットを付けることを推奨します。 | いいえ | .example.com |
| S3_ACCESS_KEY | ユーザーのファイルアップロード、アバターなどに使用されます。未定義の場合はローカルFSがデフォルトになります。 | いいえ | ||
| S3_SECRET_KEY | ユーザーのファイルアップロード、アバターなどに使用されます。 | いいえ | ||
| S3_REGION | ユーザーのファイルアップロード、アバターなどに使用されます。 | いいえ | ||
| S3_BUCKET | ユーザーのファイルアップロード、アバターなどに使用されます。 | いいえ | ||
| S3_HOST | ユーザーのファイルアップロード、アバターなどに使用されます。 | いいえ | ||
| CACHE_DIR | DBが利用できない場合に備えたオプションのオフラインキャッシュの保存場所。上位100件のコメントスレッドで定期的に更新されます。 | いいえ | ||
| BACKUP_DIR | DBが利用できない場合に備えたデータの保存場所。DBが利用できないときにコメントが送信されると、ここに保存され、後で処理されます。 | いいえ |
すべてのドメイン関連の変数は、_HOSTまたは_ADDRの接尾辞を使用することに注意してください。その違いは以下の通りです:
_HOST:example.com_ADDR:https://example.com
EMAIL_CONFIG_PATHには、以下の例のような形式のJSONファイルへのパスを指定する必要があります:

上記の例では、mailgunというデフォルトのSMTPメールトランスポートを定義しています。また、@yahoo.comのメール専用に使用される特別なトランスポートも定義しています。配信を調整するために、特定のドメインに対して特定のプロバイダーや送信IPを使用することが望ましい場合があります。これはオプションです。
DocumentDB
DocumentDBに接続する際は、デフォルト設定との互換性を保つためにMONGO_ENABLE_SSL=true MONGO_SSL_CA=/some/path.pemを指定する必要があります。
データベースのダウンタイムとメンテナンスモード 
FastComments は自動のメンテナンスモードをサポートしています。データベースが停止した場合でも、人気のあるコメントスレッドの配信を継続できます。
さらに、メンテナンスモードではすべてのコメントが BACKUP_DIR に保存されます。システムが復旧した際に(スパムチェック等)処理され、保存されます。
これは、毎時、最も人気のあるコメントスレッド上位100件を判定し、その内容をディスク上にキャッシュすることで行われます。上位100件の判定は事前計算された状態から行われるため、負荷の高い定期ジョブにはなりません。
これは完全にオプションで、CACHE_DIR と BACKUP_DIR が設定されている場合にのみ有効になります。もちろんこれによりアプリケーションノードは状態を持つようになりますが、その状態はいつでも失われてもアプリケーションが誤動作することはありません。
メンテナンスモードではコメントスレッドの適切な認証が行えないことに注意してください。そのため、安全に公開と見なせるスレッドのみが定期的にバックアップされます。
メンテナンスモードでは多くの機能が利用できません。
ロック 
任意の分散システムと同様に、FastCommentsもリソースやプロセスをロックする手段が必要です。これらのロックは /locks-in-progress エンドポイントで監視できます。
これはシステムがハングしている、または負荷がかかっている理由を確認するのに役立ちます。もし SRE がシステムの CPU 使用率が高い理由を調べたい場合、彼らは このエンドポイントを確認して不正動作している cron の名前を取得できます。
ウィジェットのコード 
フロントエンドのコードスニペットとライブラリは、オンプレミス向けでも SaaS 製品と同じです。ただし、apiHost と正しいスクリプトパスを指定する必要があります:

上は非常に簡単な例です。公式の React、Angular、Vue、Svelte などのライブラリも使用できます。
API 
APIには、通常のSaaS製品と同様にアクセスできます。オンプレミスのダッシュボードにログインしてAPIキーを作成し、それらのキーを使用してAPIにアクセスします。
API エンドポイントはオンプレミスでもSaaS製品と同じです。
結論
これでオンプレミスのドキュメントは終了です。以下にご意見やご質問がありましたらお知らせください - または サポートページからお問い合わせください。