
Idioma 🇪🇸 Español
Antecedentes
Primeros pasos
Despliegue
Arquitectura
Instalación e integración
Consejos de seguridad
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 
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.
Por dónde empezar 
Para empezar a desplegar FastComments On Prem, contáctanos.
Una vez configurado, siempre puedes descargar la última imagen de Docker desde la página de licencias.
Instancias 
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 
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. | Sí | production, dev | |
| MONGO_URI | URI de conexión a la base de datos. | Sí | ||
| 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. | Sí | ||
| SESSION_SECRET | La clave usada para firmar las sesiones. | Sí | ||
| SESSION_STORE_SECRET | La clave usada para firmar/hashear sesiones en el almacenamiento. Debe ser diferente a SESSION_SECRET. | Sí | ||
| HOSTNAME | El nombre de host donde se despliega FastComments (panel de administración, etc.). NO debe incluir puerto ni protocolo. | Sí | example.com | |
| HOST_ADDR | Una URI accesible donde se despliega FastComments (panel de administración, etc.). | Sí | 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.). | Sí | /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:

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 
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.
Bloqueos 
Como cualquier sistema distribuido, FastComments necesita alguna forma de bloquear recursos y procedimientos. Estos bloqueos pueden supervisarse mediante el endpoint /locks-in-progress.
Por ejemplo, aquí está el endpoint en nuestro shard de EE. UU..
Esto puede ser útil para ver por qué el sistema está atascado o bajo carga. Si, por ejemplo, un SRE quiere saber por qué el sistema está experimentando una alta carga de CPU, podría consultar este endpoint para obtener el nombre del cron que se está comportando mal.
Código del widget 
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:

Lo anterior es un ejemplo muy simple. También podríamos usar las bibliotecas oficiales de React, Angular, Vue, Svelte, etc.
API 
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 
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 
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.