FastComments.com

オンプレミス

FastComments をオンプレミスでホストする

FastComments はデプロイに関していくつかのソリューションを提供します。最も一般的なのは、当社が アプリケーションをお客様のためにホストする場合です。

しかし、当社は一部のお客様が情報をクラウドに保存できず、かつ すべてのデータをオンプレミスでホストする必要があることを理解しています。

このドキュメントはそのユースケースを扱います。

含まれる内容 Internal Link

FastComments On Prem により、すべてのモデレーションおよび管理ツールを含む当社のライブコメントソリューションを、 御社のハードウェア上にデプロイできます。

これは、データを御社が管理できることを意味し、コメントシステムを社内LANや企業ネットワークに限定することができます。

インスタンス Internal Link

必要なコンポーネント

On-Prem の場合、FastComments はアプリケーションサーバーとデータベースだけで構成されています。デプロイを簡素化しており、他のコンポーネントを追加することなく、アプリケーションがすべてのトラフィックを直接処理できます。

アプリケーションサーバーは Docker イメージとして提供されており、任意のコンテナ管理ソリューションでデプロイできます。

データベースである MongoDB は、セルフホストでも、AWS DocumentDB や MongoDB Atlas などの他のプロバイダーによるホスティングでも利用できます。

FastComments は現在 MongoDB 7 でテストされていますが、デプロイを容易にするため、DocumentDB 互換性も目指しています。

インスタンスサイズ

FastComments はかなり最適化されており、低い P99 を維持するためにアプリケーション自体に大型マシンを必要としないことがわかるでしょう。

すべてのバッチジョブおよび cron ジョブは、総メモリ使用量を抑えるためにストリーミングを使用します。

以下のアプリケーションサーバーおよびデータベースの表が、サイジングの参考になります。

アプリケーションサーバーインスタンス

同時ユーザー数クラスター合計 CPUクラスター合計メモリ
1001256mb
1K2512mb
10K81gb
100K328gb
1M6464gb

例えば、1 コアで毎秒約 100 のコメントスレッドを処理する場合でも、RSS は通常 250mb を超えることはほとんどありません。

データベースサーバーインスタンス

データベースのサイジングは、ワーキングセットサイズ(ある時点でアクセスするデータ量)と同時リクエスト数によって異なります。

FastComments は MongoDB に比較的優しい作りになっており、ホットなクエリではインデックスヒントやストリーミングカーソルを使用し、さまざまな箇所で同時実行数の制限を設けることで、下流システムへの過負荷を防いでいます。

以下は、データベースインスタンスサイズの一般的なガイドラインです。これはクラスター全体のリソースではなく、__1 インスタンスあたり__の値であることに注意してください。

同時ユーザー数保存コメント数インスタンスあたり CPUインスタンスあたりメモリ
1001k1256mb
1K5k2512mb
10K100k82gb
100K500k168gb
1M5M3232gb

上記の表は控えめな推定値です。実際の要件は、お客様の特定の構成(ページサイズ、コメント量など)によって異なる場合があります。

設定 Internal Link

FastCommentsは設定に環境変数を利用します。以下のリストは、On-Premに関連するサポート対象のすべての変数を示したものです。

変数デフォルト説明必須例または有効な値
NODE_ENV環境の種類。はいproduction, dev
MONGO_URIDB接続URI。はい
MONGO_ENABLE_SSLfalseデータベースへの接続にSSLを使用することを有効にします。いいえtrue, false
MONGO_ENABLE_SSL_VALIDATEfalseMongoへの接続時にCAに対して証明書を検証することを有効にします。いいえtrue, false
MONGO_SSL_CAMongo SSL CA pemファイル。いいえ/path/to/some-cert.pem
ADMIN_NOTIFICATIONS_EMAILシステムに関する重要な通知の送信先メールアドレス。いいえadmin-group@bigcorp.com
IP_HASH_SALTIPアドレスをハッシュ化するためのソルト。はい
SESSION_SECRETセッションの署名に使用されるキー。はい
SESSION_STORE_SECRETストレージ内のセッションの署名/ハッシュに使用されるキー。SESSION_SECRETとは異なる値である必要があります。はい
HOSTNAMEFastCommentsがデプロイされるホスト名(管理ダッシュボードなど)。ポートやプロトコルは含めないでください。はいexample.com
HOST_ADDRFastCommentsがデプロイされるアクセス可能なURI(管理ダッシュボードなど)。はいhttps://example.com
EMAIL_CONFIG_PATHメール設定(SMTP、ドメイン/プロバイダーのマッピングなど)が置かれているローカルファイルシステム上のパス。はい/my/config.json
EMAIL_DEFAULT_FROM_NAMEFastComments Robotメールの「From Name」ヘッダー。いいえMy Company Name
EMAIL_DEFAULT_FOOTER_LOGO/images/logo-32-2020-01.pngメールフッターのロゴ。いいえhttps://exmaple.com/footer.png
EMAIL_DEFAULT_TRANSPORTEMAIL_CONFIG_PATH内の「defaultTransport」の上書き。同じ設定ファイルを異なる環境にデプロイする場合に便利です。いいえmyTransportName
ON_PREM_TENANT_IDfastcomments.com上のアカウントのID。ライセンスキーの登録に使用されます。いいえ
ON_PREM_LICENSE_KEYOn-Premライセンスキー。いいえ
GIPHY_API_KEYGiphy APIキー。指定しない場合は、gifピッカーを無効にする設定ルールを作成する必要があります。いいえ
GIPHY_DEFAULT_RATINGpggiphy統合に使用されます。ウィジェットのカスタマイズルールで上書きすることもできます。いいえ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_TYPElocal_diskエクスポートなどの大きなファイルの保存先。いいえlocal_disk, s3
FROM_EMAIL_HOSTメールの送信元となるホスト名。いいえexample.com
COOKIE_IDfastcomments.sidfastcommentsクッキーの名前。いいえ
COOKIE_HOSTNAME.fastcomments.comクッキーの「hostname」フィールドの値。先頭にドットを付けることを推奨します。いいえ.example.com
S3_ACCESS_KEYユーザーのファイルアップロード、アバターなどに使用されます。未定義の場合はローカルFSがデフォルトになります。いいえ
S3_SECRET_KEYユーザーのファイルアップロード、アバターなどに使用されます。いいえ
S3_REGIONユーザーのファイルアップロード、アバターなどに使用されます。いいえ
S3_BUCKETユーザーのファイルアップロード、アバターなどに使用されます。いいえ
S3_HOSTユーザーのファイルアップロード、アバターなどに使用されます。いいえ
CACHE_DIRDBが利用できない場合に備えたオプションのオフラインキャッシュの保存場所。上位100件のコメントスレッドで定期的に更新されます。いいえ
BACKUP_DIRDBが利用できない場合に備えたデータの保存場所。DBが利用できないときにコメントが送信されると、ここに保存され、後で処理されます。いいえ

すべてのドメイン関連の変数は、_HOSTまたは_ADDRの接尾辞を使用することに注意してください。その違いは以下の通りです:

  • _HOST: example.com
  • _ADDR: https://example.com

EMAIL_CONFIG_PATHには、以下の例のような形式のJSONファイルへのパスを指定する必要があります:

メール設定の例
Copy Copy
1
2{
3 "defaultDKIM": {
4 "domainName": "mycompany.org",
5 "keySelector": "2024",
6 "privateKey": "-----BEGIN PRIVATE KEY-----\nABCDEFG\n-----END PRIVATE KEY-----"
7 },
8 "providerTransports": {
9 "yahoo.com": "specialTransport"
10 },
11 "defaultTransport": "mailgun",
12 "transports": {
13 "mailgun": {
14 "host": "smtp.mailgun.org",
15 "port": 587,
16 "secure": false,
17 "auth": {
18 "user": "admin@somewhere.com",
19 "pass": "password"
20 },
21 "tls": {
22 "ciphers": "SSLv3"
23 }
24 },
25 "specialTransport": {
26 "host": "smtp.someplace.org",
27 "port": 587,
28 "secure": false,
29 "auth": {
30 "user": "admin@example.com",
31 "pass": "password"
32 },
33 "tls": {
34 "ciphers": "SSLv3"
35 }
36 }
37 }
38}
39

上記の例では、mailgunというデフォルトのSMTPメールトランスポートを定義しています。また、@yahoo.comのメール専用に使用される特別なトランスポートも定義しています。配信を調整するために、特定のドメインに対して特定のプロバイダーや送信IPを使用することが望ましい場合があります。これはオプションです。

DocumentDB

DocumentDBに接続する際は、デフォルト設定との互換性を保つためにMONGO_ENABLE_SSL=true MONGO_SSL_CA=/some/path.pemを指定する必要があります。

データベースのダウンタイムとメンテナンスモード Internal Link

FastComments は自動のメンテナンスモードをサポートしています。データベースが停止した場合でも、人気のあるコメントスレッドの配信を継続できます。

さらに、メンテナンスモードではすべてのコメントが BACKUP_DIR に保存されます。システムが復旧した際に(スパムチェック等)処理され、保存されます。

これは、毎時、最も人気のあるコメントスレッド上位100件を判定し、その内容をディスク上にキャッシュすることで行われます。上位100件の判定は事前計算された状態から行われるため、負荷の高い定期ジョブにはなりません。

これは完全にオプションで、CACHE_DIR と BACKUP_DIR が設定されている場合にのみ有効になります。もちろんこれによりアプリケーションノードは状態を持つようになりますが、その状態はいつでも失われてもアプリケーションが誤動作することはありません。

メンテナンスモードではコメントスレッドの適切な認証が行えないことに注意してください。そのため、安全に公開と見なせるスレッドのみが定期的にバックアップされます。

メンテナンスモードでは多くの機能が利用できません。

ウィジェットのコード Internal Link

フロントエンドのコードスニペットとライブラリは、オンプレミス向けでも SaaS 製品と同じです。ただし、apiHost と正しいスクリプトパスを指定する必要があります:

オンプレミス用コメントコード
Copy Copy
1
2<script async src="https://my.host.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5 window.fcConfigs = [{
6 target: '#fastcomments-widget',
7 tenantId: "demo",
8 apiHost: "https://my.host.com"
9 // ... SSO ペイロードなども渡せます。
10 }];
11</script>
12

上は非常に簡単な例です。公式の React、Angular、Vue、Svelte などのライブラリも使用できます。

API Internal Link

APIには、通常のSaaS製品と同様にアクセスできます。オンプレミスのダッシュボードにログインしてAPIキーを作成し、それらのキーを使用してAPIにアクセスします。

API エンドポイントはオンプレミスでもSaaS製品と同じです。

複数ドメイン Internal Link

あなたの On-Prem FastComments インストールは、例えば app.mycorp.org や hr.mycorp.org のように、複数の内部ドメインにコメントを配信できます。これらは個別に設定できますが、単一の On-Prem 設定上でホストし、それぞれの挙動を設定するために別々の Customization Rules を作成することで実現できます。

セキュリティ Internal Link

デフォルトでは、FastComments はコメントスレッドを公開とみなします。セキュリティ層を追加するには、カスタマイズルールを作成し、 Requires SSO オプションにチェックを入れることを推奨します。これにより、コメント関連のすべてのエンドポイントが SSO 認証を必要とするようになります。

結論

これでオンプレミスのドキュメントは終了です。以下にご意見やご質問がありましたらお知らせください - または サポートページからお問い合わせください。