FastComments.com

Hébergement de FastComments sur site

FastComments propose plusieurs solutions de déploiement. La plus courante est lorsque nous hébergeons l'application pour vous.

Cependant, nous comprenons que certains clients ne peuvent pas stocker leurs informations dans le cloud et exigent que toutes leurs données soient hébergées sur site.

Cette documentation couvre ce cas d'utilisation.


Ce qui est inclus Internal Link

FastComments On Prem vous permet de déployer notre solution de commentaires en direct, y compris tous les outils de modération et d'administration, sur votre propre matériel.

Cela signifie que vous avez le contrôle de vos données, et que le système de commentaires peut être restreint à votre réseau local (LAN) ou réseau d'entreprise.

Instances Internal Link

Composants requis

Pour On-Prem, FastComments se compose simplement d'un serveur d'application et d'une base de données. Nous avons simplifié le déploiement afin que l'application puisse servir tout le trafic directement sans ajouter d'autres composants.

Le serveur d'application est fourni dans une image Docker et peut être déployé avec n'importe quelle solution de gestion de conteneurs.

La base de données, MongoDB, peut être auto-hébergée ou hébergée par un autre fournisseur comme AWS DocumentDB ou MongoDB Atlas.

FastComments est actuellement testé avec MongoDB 7, toutefois nous visons la compatibilité avec DocumentDB pour faciliter le déploiement.

Tailles des instances

Vous verrez que FastComments est assez bien optimisé et ne nécessite pas de machines puissantes pour l'application elle-même afin de maintenir des P99 faibles.

Toutes les tâches par lot et les cron jobs utilisent le streaming pour limiter l'utilisation totale de mémoire.

Les tableaux ci‑dessous pour le serveur d'application et la base de données peuvent aider au dimensionnement.

Instances du serveur d'application

Utilisateurs simultanés CPUs totaux du cluster Mémoire totale du cluster
100 1 256mb
1K 2 512mb
10K 8 1gb
100K 32 8gb
1M 64 64gb

Par exemple, un seul cœur servant environ 100 fils de discussion de commentaires par seconde n'utilise généralement jamais plus de 250mb RSS.

Instances du serveur de base de données

Le dimensionnement de la base de données dépend de la taille du working set, qui est la quantité de données auxquelles vous accédez à un moment donné, ainsi que des requêtes simultanées.

FastComments est assez conciliant avec Mongo : pour les requêtes chaudes il utilise des index hints, des streaming cursors, et applique des limites de concurrence dans plusieurs zones pour empêcher la surcharge des systèmes en aval.

Ce qui suit est une ligne directrice générale sur les tailles d'instances de base de données. Notez que ceci est par instance, et non les ressources totales du cluster.

Utilisateurs simultanés Commentaires stockés CPUs par instance Mémoire par instance
100 1k 1 256mb
1K 5k 2 512mb
10K 100k 8 2gb
100K 500k 16 8gb
1M 5M 32 32gb

Les tableaux ci‑dessus sont des estimations prudentes. Vous constaterez peut-être que les besoins réels diffèrent selon votre configuration spécifique (tailles de page, volume de commentaires, etc).

Configuration Internal Link

FastComments utilise des variables d'environnement pour la configuration. La liste suivante présente toutes les variables prises en charge et pertinentes pour On-Prem.

Variable Par défaut Description Obligatoire Exemples ou valeurs valides
NODE_ENV Type d'environnement. Oui production, dev
MONGO_URI URI de connexion à la base de données. Oui
MONGO_ENABLE_SSL false Active l'utilisation de SSL pour se connecter à la base de données. Non true, false
MONGO_ENABLE_SSL_VALIDATE false Active la validation du certificat contre l'AC lors de la connexion à Mongo. Non true, false
MONGO_SSL_CA Fichier pem CA SSL pour Mongo. Non /path/to/some-cert.pem
ADMIN_NOTIFICATIONS_EMAIL Adresse e-mail où doivent être envoyées les notifications importantes liées au système. Non admin-group@bigcorp.com
IP_HASH_SALT Sel pour le hachage des adresses IP. Oui
SESSION_SECRET Clé utilisée pour signer les sessions. Oui
SESSION_STORE_SECRET Clé utilisée pour signer/hacher les sessions dans le stockage. Doit être différente de SESSION_SECRET. Oui
HOSTNAME Le nom d'hôte où FastComments est déployé (tableau de bord admin, etc.). Ne doit PAS inclure le port ou le protocole. Oui example.com
HOST_ADDR Une URI accessible où FastComments est déployé (tableau de bord admin, etc.). Oui https://example.com
EMAIL_CONFIG_PATH Un chemin sur le système de fichiers local où se trouve la configuration des e-mails (SMTP, mappages domaine/fournisseur, etc.). Oui /my/config.json
EMAIL_DEFAULT_FROM_NAME FastComments Robot En-tête "From Name" des e-mails. Non My Company Name
EMAIL_DEFAULT_FOOTER_LOGO /images/logo-32-2020-01.png Logo du pied de page des e-mails. Non https://exmaple.com/footer.png
EMAIL_DEFAULT_TRANSPORT Remplace "defaultTransport" dans EMAIL_CONFIG_PATH. Utile pour déployer le même fichier de configuration dans différents environnements. Non myTransportName
ON_PREM_TENANT_ID L'ID de votre compte sur fastcomments.com. Utilisé pour enregistrer votre clé de licence. Non
ON_PREM_LICENSE_KEY Une clé de licence on-prem. Non
GIPHY_API_KEY Clé API Giphy. Si non spécifiée, vous devez créer une règle de configuration qui désactive le sélecteur de GIF. Non
GIPHY_DEFAULT_RATING pg Utilisé pour l'intégration Giphy. Peut aussi être remplacé via des règles de personnalisation du widget. Non g, pg, pg-13, r
OPENAI_SECRET_KEY Utilisé pour les fonctionnalités alimentées par OpenAI comme la détection de spam optionnelle basée sur GPT. Non
CDN_HOST_ADDR Le nom d'hôte à partir duquel les ressources seront récupérées. Par défaut, la valeur de HOSTNAME. Non example.com
LARGE_FILE_HOST_ADDR Le nom d'hôte à partir duquel les fichiers volumineux (comme les exports) sont récupérés. Par défaut, la valeur de CDN_HOST_ADDR. Non example.com
LARGE_FILE_LOCATION_TYPE local_disk Où les fichiers volumineux, comme les exports, doivent être stockés. Non local_disk, s3
FROM_EMAIL_HOST Le nom d'hôte à partir duquel les e-mails doivent être envoyés. Non example.com
COOKIE_ID fastcomments.sid Le nom du cookie fastcomments. Non
COOKIE_HOSTNAME .fastcomments.com La valeur du champ "hostname" du cookie. Il est recommandé de préfixer par un point. Non .example.com
S3_ACCESS_KEY Utilisé pour les téléchargements de fichiers utilisateur, avatars, etc. Valeur par défaut : FS local si non défini. Non
S3_SECRET_KEY Utilisé pour les téléchargements de fichiers utilisateur, avatars, etc. Non
S3_REGION Utilisé pour les téléchargements de fichiers utilisateur, avatars, etc. Non
S3_BUCKET Utilisé pour les téléchargements de fichiers utilisateur, avatars, etc. Non
S3_HOST Utilisé pour les téléchargements de fichiers utilisateur, avatars, etc. Non
CACHE_DIR Emplacement pour stocker le cache hors ligne optionnel, lorsque la base de données n'est pas disponible. Rafraîchi périodiquement avec les 100 principaux fils de commentaires. Non
BACKUP_DIR Emplacement pour stocker les données lorsque la base de données n'est pas disponible. Si un commentaire est soumis alors que la base de données n'est pas disponible, il est placé ici et traité ultérieurement. Non

Notez que toutes les variables liées aux domaines utilisent le suffixe _HOST ou _ADDR. La différence est :

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

Le EMAIL_CONFIG_PATH doit contenir le chemin d'un fichier JSON avec le format d'exemple suivant :

Configuration des e-mails
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

Dans l'exemple ci‑dessus, nous définissons un transport e-mail SMTP par défaut nommé mailgun. Nous définissons également un transport spécial que nous utilisons spécifiquement pour les adresses @yahoo.com. Dans certains scénarios, il est souhaitable d'utiliser un fournisseur spécifique ou une IP d'envoi pour un domaine afin d'affiner la délivrabilité. Ceci est optionnel.

DocumentDB

Lors de la connexion à DocumentDB, vous devrez spécifier MONGO_ENABLE_SSL=true MONGO_SSL_CA=/some/path.pem pour être compatible avec les paramètres par défaut.


Indisponibilité de la base de données et mode maintenance Internal Link


FastComments prend en charge un mode de maintenance automatique. Si la base de données tombe en panne, il peut continuer à servir les fils de commentaires populaires.

De plus, en mode maintenance, tous les commentaires sont enregistrés dans BACKUP_DIR. Ils seront traités (contrôlés pour le spam, etc.) et sauvegardés une fois le système de nouveau en ligne.

Il le fait en déterminant, toutes les heures, les 100 fils de commentaires les plus populaires et en mettant en cache leur contenu sur disque. La détermination des 100 meilleurs fils est déjà effectuée à partir d'un état pré-calculé, donc ce n'est pas un travail périodique lourd.

Ceci est complètement optionnel, et n'est activé que si CACHE_DIR et BACKUP_DIR sont définis. Cela rend bien sûr les nœuds de l'application avec état, cependant il s'agit d'un état qui peut être perdu à tout moment sans provoquer de dysfonctionnement de l'application.

Notez qu'en mode maintenance, l'authentification correcte des fils de commentaires ne peut pas être effectuée, donc seuls les fils considérés comme étant publics en toute sécurité sont sauvegardés périodiquement.

En mode maintenance, de nombreuses fonctionnalités ne sont pas disponibles.


Code du widget Internal Link


Les extraits de code front-end et les bibliothèques pour On-Prem sont les mêmes que pour le produit SaaS. Cependant, vous devez spécifier apiHost et le chemin de script correct :

Code des commentaires pour On Prem
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 // ... peut aussi passer une charge utile SSO, etc.
9 });
10</script>
11

L'exemple ci‑dessus est très simple. Nous pourrions également utiliser les bibliothèques officielles pour React, Angular, Vue, Svelte, etc.


API Internal Link

L'API peut être utilisée de la même manière que le produit SaaS standard : vous vous connectez au tableau de bord On-Prem pour créer des clés API et utiliser ces clés pour accéder à l'API. Les endpoints de l'API sont les mêmes on-prem que pour le produit SaaS.

Plusieurs domaines Internal Link

Votre installation FastComments On-Prem peut servir des commentaires à plusieurs domaines internes, par exemple app.mycorp.org et hr.mycorp.org. Vous pouvez configurer ces séparément mais les héberger sur une seule installation On-Prem en créant des Règles de personnalisation distinctes pour configurer leurs comportements individuels.

Sécurité Internal Link

Par défaut, FastComments considère que les fils de commentaires sont publics. Pour ajouter une couche de sécurité, il est recommandé de créer une règle de personnalisation avec l' Requires SSO option cochée. Cela fera en sorte que tous les endpoints liés aux commentaires exigeront une authentification SSO.


En conclusion

Vous êtes arrivé·e à la fin de la documentation On Prem. Faites-nous savoir si vous avez d'autres commentaires ou questions ci-dessous - vous pouvez également nous contacter via la Page d'assistance.