FastComments.com


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

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

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

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


含まれる内容 Internal Link


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

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


インスタンス Internal Link

必須コンポーネント

For On-Prem, FastComments just consists of an application server and a database. We have simplified the deployment so that the application can serve all traffic directly without adding other components.

The application server is provided in a Docker image and can be deployed with any container management solution.

The database, MongoDB, can be self-ran or hosted by another provider like AWS DocumentDB or MongoDB Atlas.

FastComments is currently tested with MongoDB 7, however we aim to be DocumentDB compatible to ease deployment.

インスタンスサイズ

You will find that FastComments is fairly well optimized and doesn't require large machines for the application itself to keep low P99s.

All batch and cron jobs use streaming to limit total memory usage.

The below tables for the application server and database can assist with sizing.

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

同時ユーザー数 クラスタ合計 CPU クラスタ合計メモリ
100 1 256mb
1K 2 512mb
10K 8 1gb
100K 32 8gb
1M 64 64gb

For example, a single core serving around 100 comment threads a second usually never uses more than 250mb RSS.

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

Sizing the database depends on working set size, which is the amount of data you access at a given point in time, as well as concurrent requests.

FastComments is fairly kind to Mongo, in that for the hot queries it uses index hints, streaming cursors, and has concurrency limits in various areas to prevent overloading of downstream systems.

The below is a general guideline on database instance sizes. Note that this is per instance, not total resources in the cluster.

同時ユーザー数 保存コメント数 インスタンスあたり CPU インスタンスあたりメモリ
100 1k 1 256mb
1K 5k 2 512mb
10K 100k 8 2gb
100K 500k 16 8gb
1M 5M 32 32gb

The above tables are conservative estimates. You may find actual requirements differ based on your specific configuration (page sizes, comment volume, etc).

設定 Internal Link

FastComments は設定に環境変数を使用します。以下の一覧はオンプレに関連するサポートされているすべての変数を概説しています。

Variable Default Info Required Examples or Valid Values
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 オンプレ用ライセンスキー。 いいえ
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

The EMAIL_CONFIG_PATH should contain a path to a JSON file with the following example format:

メール設定
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_DIRBACKUP_DIR が設定されている場合にのみ有効になります。もちろんこれによりアプリケーションノードは状態を持つようになりますが、その状態はいつでも失われてもアプリケーションが誤動作することはありません。

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

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


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


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

オンプレ用のコメントコード
Copy Copy
1
2<script src="https://my.host.com/js/embed-v2.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5 FastCommentsUI(document.getElementById('fastcomments-widget'), {
6 tenantId: "demo",
7 apiHost: "https://my.host.com"
8 // ... SSO のペイロードなども渡すことができます。
9 });
10</script>
11

上記は非常に単純な例です。1stパーティの React、Angular、Vue、Svelte などのライブラリを使用することもできます。


API Internal Link

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

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

複数ドメイン Internal Link

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

セキュリティ Internal Link


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



結論

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