FastComments.com


Hébergement de FastComments sur site

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

Cependant, nous comprenons que certains clients ne peuvent pas stocker leurs données 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 au 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 de sorte que l'application puisse servir tout le trafic directement sans ajouter d'autres composants.

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

La base de données, MongoDB, peut être autogéré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 d'instance

Vous constaterez que FastComments est assez bien optimisé et ne nécessite pas de machines de grande taille pour l'application elle‑même afin de conserver de faibles P99s.

Toutes les tâches par lot et cron utilisent le streaming pour limiter l'utilisation totale de la 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

Concurrent UsersTotal Cluster CPUsTotal Cluster Memory
1001256mb
1K2512mb
10K81gb
100K328gb
1M6464gb

Par exemple, un seul cœur servant environ 100 fils 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, c'est‑à‑dire de la quantité de données auxquelles vous accédez à un moment donné, ainsi que des requêtes simultanées.

FastComments est assez indulgent avec Mongo, dans la mesure où pour les requêtes "chaudes" il utilise des index hints, des curseurs en streaming, et impose des limites de concurrence à divers endroits pour éviter de surcharger les systèmes en aval.

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

Concurrent UsersComments StoredCPUs Per InstanceMemory Per Instance
1001k1256mb
1K5k2512mb
10K100k82gb
100K500k168gb
1M5M3232gb

Les tableaux ci‑dessus sont des estimations conservatrices. Vous constaterez peut‑être que les besoins réels diffèrent en fonction de 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 décrit toutes les variables prises en charge qui sont pertinentes pour On-Prem.

VariableDefaultInfoRequiredExamples or Valid Values
NODE_ENVType d'environnement.Ouiproduction, dev
MONGO_URIURI de connexion à la BD.Oui
MONGO_ENABLE_SSLfalsePermet l'utilisation de SSL pour se connecter à la base de données.Nontrue, false
MONGO_ENABLE_SSL_VALIDATEfalsePermet de valider le certificat par rapport à l'autorité de certification lors de la connexion à Mongo.Nontrue, false
MONGO_SSL_CAFichier pem de l'autorité de certification SSL de Mongo.Non/path/to/some-cert.pem
ADMIN_NOTIFICATIONS_EMAILAdresse courriel où les notifications importantes liées au système doivent être envoyées.Nonadmin-group@bigcorp.com
IP_HASH_SALTSel pour le hachage des adresses IP.Oui
SESSION_SECRETClé utilisée pour signer les sessions.Oui
SESSION_STORE_SECRETClé utilisée pour signer/hacher les sessions en stockage. Doit être différente de SESSION_SECRET.Oui
HOSTNAMELe nom d'hôte où FastComments est déployé (tableau de bord admin, etc.). NE DOIT PAS inclure le port ou le protocole.Ouiexample.com
HOST_ADDRUne URI accessible où FastComments est déployé (tableau de bord admin, etc.).Ouihttps://example.com
EMAIL_CONFIG_PATHUn chemin sur le système de fichiers local où se trouve la configuration des courriels (SMTP, mappages de domaines/fournisseurs, etc.).Oui/my/config.json
EMAIL_DEFAULT_FROM_NAMEFastComments RobotEn-tête "Nom de l'expéditeur" des courriels.NonMy Company Name
EMAIL_DEFAULT_FOOTER_LOGO/images/logo-32-2020-01.pngLogo du pied de page des courriels.Nonhttps://exmaple.com/footer.png
EMAIL_DEFAULT_TRANSPORTRemplace "defaultTransport" dans EMAIL_CONFIG_PATH. Utile pour déployer le même fichier de configuration sur différents environnements.NonmyTransportName
ON_PREM_TENANT_IDL'ID de votre compte sur fastcomments.com. Utilisé pour enregistrer votre clé de licence.Non
ON_PREM_LICENSE_KEYUne clé de licence sur site.Non
GIPHY_API_KEYClé API Giphy. Si non spécifiée, vous devriez créer une règle de configuration qui désactive le sélecteur de GIF.Non
GIPHY_DEFAULT_RATINGpgUtilisé pour l'intégration Giphy. Peut aussi être remplacé par des règles de personnalisation du widget.Nong, pg, pg-13, r
OPENAI_SECRET_KEYUtilisé pour les fonctionnalités propulsées par OpenAI, comme la détection anti-spam optionnelle basée sur GPT.Non
CDN_HOST_ADDRLe nom d'hôte d'où les ressources seront récupérées. Par défaut, la valeur de HOSTNAME.Nonexample.com
LARGE_FILE_HOST_ADDRLe nom d'hôte d'où sont récupérés les gros fichiers (comme les exportations). Par défaut, la valeur de CDN_HOST_ADDR.Nonexample.com
LARGE_FILE_LOCATION_TYPElocal_diskOù les gros fichiers, comme les exportations, doivent être stockés.Nonlocal_disk, s3
FROM_EMAIL_HOSTLe nom d'hôte d'où les courriels doivent être envoyés.Nonexample.com
COOKIE_IDfastcomments.sidLe nom du cookie fastcomments.Non
COOKIE_HOSTNAME.fastcomments.comLa valeur du champ "hostname" du cookie. Il est recommandé de préfixer avec un point.Non.example.com
S3_ACCESS_KEYUtilisé pour les téléversements de fichiers utilisateur, avatars, etc. Par défaut, système de fichiers local si non défini.Non
S3_SECRET_KEYUtilisé pour les téléversements de fichiers utilisateur, avatars, etc.Non
S3_REGIONUtilisé pour les téléversements de fichiers utilisateur, avatars, etc.Non
S3_BUCKETUtilisé pour les téléversements de fichiers utilisateur, avatars, etc.Non
S3_HOSTUtilisé pour les téléversements de fichiers utilisateur, avatars, etc.Non
CACHE_DIREmplacement pour stocker le cache hors ligne optionnel, pour quand la BD n'est pas disponible. Rafraîchi périodiquement avec les 100 meilleurs fils de commentaires.Non
BACKUP_DIREmplacement pour stocker les données lorsque la BD n'est pas disponible. Si un commentaire est soumis lorsque la BD n'est pas disponible, il est stocké ici et traité plus tard.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 un chemin vers un fichier JSON avec le format d'exemple suivant :

Configuration de courriel
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 de courriel SMTP par défaut nommé mailgun. Nous définissons également un transport spécial que nous utilisons spécifiquement pour les courriels @yahoo.com. Dans certains scénarios, il peut être souhaitable d'utiliser un fournisseur ou une adresse IP d'envoi spécifique pour un domaine afin d'optimiser 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 de maintenance Internal Link


FastComments prend en charge un mode de maintenance automatique. Si la base de données est hors service, il peut continuer à fournir les fils de commentaires populaires.

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

Cela fonctionne en déterminant, toutes les heures, les 100 fils de commentaires les plus populaires et en mettant leur contenu en cache 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 une tâche périodique lourde.

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 entraîner 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 sans risque comme publics 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 côté front 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 du script correct:

Code des commentaires pour On-Prem
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 // ... peut également transmettre une charge utile SSO, etc.
10 }];
11</script>
12

Ce qui précède est un exemple très simple. Nous pourrions également utiliser les bibliothèques de première partie React, Angular, Vue, Svelte, etc.

API Internal Link

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

Plusieurs domaines Internal Link

Votre installation On-Prem de FastComments peut servir des commentaires à plusieurs domaines internes, par exemple app.mycorp.org et hr.mycorp.org. Vous pouvez configurer ces séparément tout en les hébergeant 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 suppose que les fils de commentaires sont publics. Pour ajouter une couche de sécurité, il est recommandé de créer une Customization Rule avec l'option Requires SSO cochée. Cela fera en sorte que tous les points de terminaison liés aux commentaires exigent l'authentification SSO.

En conclusion

Vous êtes arrivé à la fin de la documentation On Prem. Faites-nous part de tout commentaire ou question supplémentaire ci-dessous - vous pouvez également nous contacter via la Page de support.