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 Users Total Cluster CPUs Total Cluster Memory
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 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 Users Comments Stored CPUs Per Instance Memory Per 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 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.

Variable Default Info Required Examples or Valid Values
NODE_ENV Type d'environnement. Oui production, dev
MONGO_URI URI de connexion à la BD. Oui
MONGO_ENABLE_SSL false Permet l'utilisation de SSL pour se connecter à la base de données. Non true, false
MONGO_ENABLE_SSL_VALIDATE false Permet de valider le certificat par rapport à l'autorité de certification lors de la connexion à Mongo. Non true, false
MONGO_SSL_CA Fichier pem de l'autorité de certification SSL de Mongo. Non /path/to/some-cert.pem
ADMIN_NOTIFICATIONS_EMAIL Adresse courriel où les notifications importantes liées au système doivent être envoyées. 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 en 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 courriels (SMTP, mappages de domaines/fournisseurs, etc.). Oui /my/config.json
EMAIL_DEFAULT_FROM_NAME FastComments Robot En-tête "Nom de l'expéditeur" des courriels. Non My Company Name
EMAIL_DEFAULT_FOOTER_LOGO /images/logo-32-2020-01.png Logo du pied de page des courriels. 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 sur 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 sur site. Non
GIPHY_API_KEY Clé 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_RATING pg Utilisé pour l'intégration Giphy. Peut aussi être remplacé par des règles de personnalisation du widget. Non g, pg, pg-13, r
OPENAI_SECRET_KEY Utilisé pour les fonctionnalités propulsées par OpenAI, comme la détection anti-spam optionnelle basée sur GPT. Non
CDN_HOST_ADDR Le nom d'hôte d'où 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 d'où sont récupérés les gros fichiers (comme les exportations). Par défaut, la valeur de CDN_HOST_ADDR. Non example.com
LARGE_FILE_LOCATION_TYPE local_disk Où les gros fichiers, comme les exportations, doivent être stockés. Non local_disk, s3
FROM_EMAIL_HOST Le nom d'hôte d'où les courriels 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 avec un point. Non .example.com
S3_ACCESS_KEY Utilisé 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_KEY Utilisé pour les téléversements de fichiers utilisateur, avatars, etc. Non
S3_REGION Utilisé pour les téléversements de fichiers utilisateur, avatars, etc. Non
S3_BUCKET Utilisé pour les téléversements de fichiers utilisateur, avatars, etc. Non
S3_HOST Utilisé pour les téléversements de fichiers utilisateur, avatars, etc. Non
CACHE_DIR Emplacement 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_DIR Emplacement 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 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

Ce qui précède est un exemple très simple. Nous pourrions aussi utiliser les bibliothèques 1st-party 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.