
Langue 🇨🇦 Français (Canada)
Contexte
Premiers pas
Déploiement
Architecture
Installation et intégration
Conseils de sécurité
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 
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.
Par où commencer 
Pour commencer à déployer FastComments On Prem, contactez-nous.
Une fois l'installation effectuée, vous pouvez toujours télécharger la dernière image Docker depuis la page de licences.
Instances 
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 
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 :

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 
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.
Verrous 
Comme tout système distribué, FastComments a besoin d'un moyen de verrouiller les ressources et les procédures. Ces verrous peuvent être surveillés via le point de terminaison /locks-in-progress.
Par exemple, voici le point de terminaison sur notre shard américain.
Cela peut être utile pour voir pourquoi le système est bloqué, ou soumis à une charge. Si un SRE veut savoir pourquoi le système connaît une utilisation élevée du processeur, il pourrait vérifier ce point de terminaison pour obtenir le nom du cron qui se comporte mal.
Code du widget 
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 :

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 
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 
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é 
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.