
Langue 🇫🇷 Français (France)
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 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 
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.
Par où commencer 
Pour commencer le déploiement de FastComments On Prem, contactez-nous.
Une fois la configuration effectuée, vous pouvez toujours télécharger la dernière image Docker depuis la page des 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 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 
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 :

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 
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.
Verrous 
Comme tout système distribué, FastComments a besoin d'un moyen pour verrouiller des ressources et des procédures. Ces verrous peuvent être surveillés via le point de terminaison /locks-in-progress.
Par exemple, voici le point de terminaison de notre shard US.
Cela peut être utile pour comprendre pourquoi le système est bloqué ou en surcharge. Si, par exemple, un SRE veut voir pourquoi le système subit une charge CPU élevée, il/elle pourrait consulter ce point de terminaison pour obtenir le nom du cron défaillant.
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 :

L'exemple ci‑dessus est très simple. Nous pourrions également utiliser les bibliothèques officielles pour React, Angular, Vue, Svelte, etc.
API 
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 
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é 
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.