
言語 🇯🇵 日本語
背景
導入
展開
アーキテクチャ
インストールと統合
セキュリティのヒント
FastComments をオンプレミスでホストする
FastComments はデプロイに関していくつかのソリューションを提供します。最も一般的なのは、当社が アプリケーションをお客様のためにホストする場合です。
しかし、当社は一部のお客様が情報をクラウドに保存できず、かつ すべてのデータをオンプレミスでホストする必要があることを理解しています。
このドキュメントはそのユースケースを扱います。
含まれる内容 
FastComments On Prem により、すべてのモデレーションおよび管理ツールを含む当社のライブコメントソリューションを、 御社のハードウェア上にデプロイできます。
これは、データを御社が管理できることを意味し、コメントシステムを社内LANや企業ネットワークに限定することができます。
はじめに 
FastComments On Prem の導入を開始するには、お問い合わせください。
セットアップが完了したら、ライセンスページからいつでも最新の docker image をダウンロードできます。
インスタンス 
必須コンポーネント
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).
設定 
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:

上記の例では、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 の名前を取得できます。
ウィジェットのコード 
On-Premのフロントエンド用コードスニペットとライブラリはSaaS製品と同じです。ただし、apiHost と正しいスクリプトパスを指定する必要があります:

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