FastComments.com

Alojamiento de FastComments en las instalaciones

FastComments ofrece varias soluciones para el despliegue. Lo más común es que alojemos la aplicación para usted.

Sin embargo, entendemos que algunos clientes no pueden almacenar su información en la nube y requieren alojar todos sus datos en las instalaciones.

Esta documentación cubre ese caso de uso.


Qué incluye Internal Link


FastComments On Prem le permite desplegar nuestra solución de comentarios en vivo, incluyendo todas las herramientas de moderación y administración, en su propio hardware.

Esto significa que usted tiene control sobre sus datos, y el sistema de comentarios puede restringirse a su LAN local o a la red corporativa.


Instancias Internal Link

Componentes Requeridos

Para On-Prem, FastComments consiste únicamente en un servidor de aplicación y una base de datos. Hemos simplificado el despliegue de modo que la aplicación pueda atender todo el tráfico directamente sin añadir otros componentes.

El servidor de aplicación se proporciona en una imagen Docker y puede desplegarse con cualquier solución de gestión de contenedores.

La base de datos, MongoDB, puede ejecutarse por cuenta propia o alojarse con otro proveedor como AWS DocumentDB o MongoDB Atlas.

FastComments se prueba actualmente con MongoDB 7; sin embargo, nuestro objetivo es ser compatibles con DocumentDB para facilitar el despliegue.

Tamaños de instancia

Verá que FastComments está bastante optimizado y no requiere máquinas grandes para la propia aplicación para mantener P99s bajos.

Todos los trabajos por lotes y cron usan streaming para limitar el uso total de memoria.

Las tablas siguientes para el servidor de aplicación y la base de datos pueden ayudar con el dimensionamiento.

Instancias del servidor de aplicación

Concurrent Users Total Cluster CPUs Total Cluster Memory
100 1 256mb
1K 2 512mb
10K 8 1gb
100K 32 8gb
1M 64 64gb

Por ejemplo, un único núcleo atendiendo alrededor de 100 hilos de comentarios por segundo normalmente nunca usa más de 250mb RSS.

Instancias del servidor de base de datos

Dimensionar la base de datos depende del tamaño del conjunto de trabajo (working set), que es la cantidad de datos a los que se accede en un momento dado, así como de las solicitudes concurrentes.

FastComments es bastante amable con Mongo, en el sentido de que para las consultas calientes utiliza index hints, streaming cursors, y tiene límites de concurrencia en varias áreas para evitar sobrecargar los sistemas aguas abajo.

Lo siguiente es una guía general sobre tamaños de instancias de base de datos. Tenga en cuenta que esto es por instancia, no los recursos totales en el clúster.

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

Las tablas anteriores son estimaciones conservadoras. Puede que los requisitos reales difieran según su configuración específica (tamaños de página, volumen de comentarios, etc.).

Configuración Internal Link

FastComments utiliza variables de entorno para la configuración. La siguiente lista describe todas las variables compatibles que son relevantes para On-Prem.

Variable Default Info Requerido Examples or Valid Values
NODE_ENV Tipo de entorno. production, dev
MONGO_URI URI de conexión a la base de datos.
MONGO_ENABLE_SSL false Permite usar SSL para conectarse a la base de datos. No true, false
MONGO_ENABLE_SSL_VALIDATE false Habilita la validación del certificado contra la CA al conectarse a Mongo. No true, false
MONGO_SSL_CA Archivo PEM de la CA SSL de Mongo. No /path/to/some-cert.pem
ADMIN_NOTIFICATIONS_EMAIL Correo donde deben enviarse notificaciones importantes relacionadas con el sistema. No admin-group@bigcorp.com
IP_HASH_SALT Salt para hashear direcciones IP.
SESSION_SECRET La clave usada para firmar las sesiones.
SESSION_STORE_SECRET La clave usada para firmar/hashear sesiones en el almacenamiento. Debe ser diferente a SESSION_SECRET.
HOSTNAME El nombre de host donde se despliega FastComments (panel de administración, etc.). NO debe incluir puerto ni protocolo. example.com
HOST_ADDR Una URI accesible donde se despliega FastComments (panel de administración, etc.). https://example.com
EMAIL_CONFIG_PATH Una ruta en el sistema de archivos local donde se encuentra la configuración de correo (SMTP, mapeos de dominio/proveedor, etc.). /my/config.json
EMAIL_DEFAULT_FROM_NAME FastComments Robot Encabezado 'From Name' del correo electrónico. No My Company Name
EMAIL_DEFAULT_FOOTER_LOGO /images/logo-32-2020-01.png Logo del pie de página del correo. No https://exmaple.com/footer.png
EMAIL_DEFAULT_TRANSPORT Anulación de 'defaultTransport' en EMAIL_CONFIG_PATH. Útil para desplegar el mismo archivo de configuración en diferentes entornos. No myTransportName
ON_PREM_TENANT_ID El ID de su cuenta en fastcomments.com. Se usa para registrar su clave de licencia. No
ON_PREM_LICENSE_KEY Una clave de licencia on-prem. No
GIPHY_API_KEY Clave API de Giphy. Si no se especifica, debe crear una regla de configuración que deshabilite el selector de GIFs. No
GIPHY_DEFAULT_RATING pg Usado para la integración con Giphy. También puede ser anulado con reglas de personalización del widget. No g, pg, pg-13, r
OPENAI_SECRET_KEY Usado para funciones con OpenAI como la detección de spam opcional basada en GPT. No
CDN_HOST_ADDR El nombre de host desde el que se obtendrán los assets. Por defecto toma el valor de HOSTNAME. No example.com
LARGE_FILE_HOST_ADDR El nombre de host desde el que se obtendrán archivos grandes (como exportaciones). Por defecto toma el valor de CDN_HOST_ADDR. No example.com
LARGE_FILE_LOCATION_TYPE local_disk Dónde deben almacenarse archivos grandes, como exportaciones. No local_disk, s3
FROM_EMAIL_HOST El nombre de host desde el que se deben enviar los correos. No example.com
COOKIE_ID fastcomments.sid El nombre de la cookie de fastcomments. No
COOKIE_HOSTNAME .fastcomments.com El valor del campo 'hostname' de la cookie. Se recomienda prefijarlo con un punto. No .example.com
S3_ACCESS_KEY Usado para cargas de archivos de usuario, avatares, etc. Por defecto usa el sistema de archivos local si no está definido. No
S3_SECRET_KEY Usado para cargas de archivos de usuario, avatares, etc. No
S3_REGION Usado para cargas de archivos de usuario, avatares, etc. No
S3_BUCKET Usado para cargas de archivos de usuario, avatares, etc. No
S3_HOST Usado para cargas de archivos de usuario, avatares, etc. No
CACHE_DIR Ubicación para almacenar la caché opcional fuera de línea, para cuando la BD no esté disponible. Se actualiza periódicamente con los 100 hilos principales. No
BACKUP_DIR Ubicación para almacenar datos cuando la BD no está disponible. Si se envía un comentario cuando la BD no está disponible, va aquí y se procesa después. No

Tenga en cuenta que todas las variables relacionadas con dominios usan el sufijo _HOST o _ADDR. La diferencia es:

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

El EMAIL_CONFIG_PATH debe contener una ruta a un archivo JSON con el siguiente formato de ejemplo:

Configuración de correo
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

En el ejemplo anterior definimos un transporte de correo SMTP predeterminado llamado mailgun. También definimos un transporte especial que usamos específicamente para correos @yahoo.com. En algunos escenarios es deseable usar un proveedor específico o una IP de envío para un dominio para ajustar la entrega. Esto es opcional.

DocumentDB

Al conectarse a DocumentDB, querrá especificar MONGO_ENABLE_SSL=true MONGO_SSL_CA=/some/path.pem para ser compatible con la configuración predeterminada.


Tiempo de inactividad de la base de datos y modo de mantenimiento Internal Link

FastComments admite un modo de mantenimiento automático. Si la base de datos deja de funcionar, puede seguir sirviendo los hilos de comentarios más populares.

Además, en modo de mantenimiento, todos los comentarios se guardan en BACKUP_DIR. Se procesarán (verificados por spam, etc.) y se guardarán una vez que el sistema vuelva a estar en línea.

Lo hace determinando, cada hora, los 100 hilos de comentarios más populares y almacenando en caché su contenido en disco. Determinar los 100 hilos ya se realiza a partir de un estado precalculado, por lo que no es un trabajo periódico pesado.

Esto es completamente opcional, y solo se habilita si CACHE_DIR y BACKUP_DIR están establecidos. Esto, por supuesto, hace que los nodos de la aplicación sean con estado, sin embargo es un estado que puede perderse en cualquier momento sin provocar que la aplicación se comporte mal.

Tenga en cuenta que en modo de mantenimiento no se puede realizar una autenticación adecuada de los hilos de comentarios, por lo que solo se respaldan periódicamente los hilos que se consideran de manera segura públicos.

En modo de mantenimiento muchas funciones no están disponibles.

Código del widget Internal Link

Los fragmentos de código de front-end y las bibliotecas para On-Prem son los mismos que los del producto SaaS. Sin embargo, debe especificar apiHost y la ruta de script correcta:

Código de comentarios para 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 // ... también puede pasar la carga útil SSO, etc.
9 });
10</script>
11

Lo anterior es un ejemplo muy simple. También podríamos usar las bibliotecas oficiales de React, Angular, Vue, Svelte, etc.

API Internal Link

Se puede acceder a la API de la misma manera que al producto SaaS habitual: iniciarías sesión en el panel On-Prem para crear claves de API y usar esas claves para acceder a la API.

La API endpoints son los mismos on-prem que en el producto SaaS.

Múltiples dominios Internal Link

Su instalación On-Prem de FastComments puede servir comentarios a múltiples dominios internos, por ejemplo app.mycorp.org y hr.mycorp.org. Puede configurarlos por separado pero alojarlos en una sola instalación On-Prem creando Customization Rules separadas para configurar sus comportamientos individuales.

Seguridad Internal Link

Por defecto, FastComments asume que los hilos de comentarios son públicos. Para añadir una capa de seguridad, se recomienda crear una Regla de personalización con la Requires SSO opción marcada. Esto hará que todos los endpoints relacionados con los comentarios requieran autenticación SSO.


En conclusión

Has llegado al final de la documentación On Prem. Haznos saber qué comentarios o preguntas adicionales tengas abajo - también puedes ponerte en contacto con nosotros a través de la Página de soporte.