FastComments.com

Hospedando o FastComments On Prem

O FastComments oferece várias soluções para implantação. A mais comum é onde nós hospedamos a aplicação para você.

No entanto, entendemos que alguns clientes não podem armazenar suas informações na nuvem, e exigem hospedar todos os seus dados em suas próprias instalações.

Esta documentação cobre esse caso de uso.


O que está incluído Internal Link

FastComments On Prem permite que você implante nossa solução de comentários ao vivo, incluindo todas as ferramentas de moderação e administração, em seu próprio hardware.

Isso significa que você tem controle sobre seus dados, e o sistema de comentários pode ser restrito à sua LAN local ou à rede corporativa.

Instâncias Internal Link


Componentes Obrigatórios

Para On-Prem, o FastComments consiste apenas em um servidor de aplicação e um banco de dados. Simplificamos a implantação de forma que a aplicação possa atender todo o tráfego diretamente sem adicionar outros componentes.

O servidor de aplicação é fornecido em uma imagem Docker e pode ser implantado com qualquer solução de gerenciamento de contêineres.

O banco de dados, MongoDB, pode ser auto-hospedado ou fornecido por outro provedor como AWS DocumentDB ou MongoDB Atlas.

O FastComments atualmente é testado com MongoDB 7, no entanto nosso objetivo é ser compatível com DocumentDB para facilitar a implantação.

Tamanhos de Instância

Você verá que o FastComments é bastante otimizado e não requer máquinas grandes para o próprio aplicativo para manter P99s baixos.

Todas as tarefas em lote e cron usam streaming para limitar o uso total de memória.

As tabelas abaixo para o servidor de aplicação e banco de dados podem ajudar no dimensionamento.

Instâncias do Servidor de Aplicação

Usuários Concorrentes CPUs Totais do Cluster Memória Total do Cluster
100 1 256mb
1K 2 512mb
10K 8 1gb
100K 32 8gb
1M 64 64gb

Por exemplo, um único núcleo servindo cerca de 100 threads de comentário por segundo normalmente nunca usa mais de 250mb RSS.

Instâncias do Servidor de Banco de Dados

Dimensionar o banco de dados depende do tamanho do conjunto de trabalho, que é a quantidade de dados que você acessa em um dado momento, bem como das requisições concorrentes.

O FastComments é relativamente gentil com o Mongo, no sentido de que, para as consultas mais quentes, ele usa index hints, streaming cursors, e possui limites de concorrência em várias áreas para evitar sobrecarga em sistemas a jusante.

O que segue é um guia geral sobre tamanhos de instância de banco de dados. Observe que isso é por instância, não os recursos totais no cluster.

Usuários Concorrentes Comentários Armazenados CPUs Por Instância Memória Por Instância
100 1k 1 256mb
1K 5k 2 512mb
10K 100k 8 2gb
100K 500k 16 8gb
1M 5M 32 32gb

As tabelas acima são estimativas conservadoras. Você pode achar que os requisitos reais diferem com base na sua configuração específica (tamanhos de página, volume de comentários, etc).


Config Internal Link

FastComments utiliza variáveis de ambiente para configuração. A lista a seguir descreve todas as variáveis suportadas que são relevantes para On-Prem.

Variável Padrão Informações Obrigatório Exemplos ou Valores Válidos
NODE_ENV Tipo de ambiente. Sim production, dev
MONGO_URI URI de conexão com o BD. Sim
MONGO_ENABLE_SSL false Habilita o uso de SSL para conectar-se ao banco de dados. Não true, false
MONGO_ENABLE_SSL_VALIDATE false Habilita a validação do certificado contra a CA ao conectar-se ao Mongo. Não true, false
MONGO_SSL_CA Arquivo PEM da CA para SSL do Mongo. Não /path/to/some-cert.pem
ADMIN_NOTIFICATIONS_EMAIL E-mail para onde devem ser enviadas notificações importantes relacionadas ao sistema. Não admin-group@bigcorp.com
IP_HASH_SALT Salt para hashing de endereços IP. Sim
SESSION_SECRET Chave usada para assinar sessões. Sim
SESSION_STORE_SECRET Chave usada para assinar/hash das sessões no armazenamento. Deve ser diferente de SESSION_SECRET. Sim
HOSTNAME O hostname onde o FastComments está implantado (painel de administração etc). NÃO deve incluir porta ou protocolo. Sim example.com
HOST_ADDR Uma URI acessível onde o FastComments está implantado (painel de administração etc). Sim https://example.com
EMAIL_CONFIG_PATH Um caminho no sistema de arquivos local onde fica a configuração de e-mail (SMTP, mapeamentos de domínio/provedor, etc). Sim /my/config.json
EMAIL_DEFAULT_FROM_NAME FastComments Robot Cabeçalho "From Name" do e-mail. Não My Company Name
EMAIL_DEFAULT_FOOTER_LOGO /images/logo-32-2020-01.png Logo do rodapé do e-mail. Não https://exmaple.com/footer.png
EMAIL_DEFAULT_TRANSPORT Sobrescrita para "defaultTransport" em EMAIL_CONFIG_PATH. Útil para implantar o mesmo arquivo de configuração em ambientes diferentes. Não myTransportName
ON_PREM_TENANT_ID O ID da sua conta em fastcomments.com. Usado para registrar sua chave de licença. Não
ON_PREM_LICENSE_KEY Uma chave de licença on-prem. Não
GIPHY_API_KEY Chave de API do Giphy. Se não especificada, você deve criar uma regra de configuração que desative o seletor de GIFs. Não
GIPHY_DEFAULT_RATING pg Usada para integração com o Giphy. Também pode ser sobrescrita com regras de customização do widget. Não g, pg, pg-13, r
OPENAI_SECRET_KEY Usada para recursos com OpenAI, como detecção de spam opcional baseada em GPT. Não
CDN_HOST_ADDR O hostname de onde os assets serão buscados. Por padrão, usa o valor de HOSTNAME. Não example.com
LARGE_FILE_HOST_ADDR O hostname de onde arquivos grandes (como exports) são buscados. Por padrão, usa o valor de CDN_HOST_ADDR. Não example.com
LARGE_FILE_LOCATION_TYPE local_disk Onde arquivos grandes, como exports, devem ser armazenados. Não local_disk, s3
FROM_EMAIL_HOST O hostname de onde os e-mails devem ser enviados. Não example.com
COOKIE_ID fastcomments.sid O nome do cookie do fastcomments. Não
COOKIE_HOSTNAME .fastcomments.com O valor do campo "hostname" do cookie. Recomendado prefixar com ponto. Não .example.com
S3_ACCESS_KEY Usado para uploads de arquivos de usuário, avatares, etc. Usa o sistema de arquivos local por padrão se não definido. Não
S3_SECRET_KEY Usado para uploads de arquivos de usuário, avatares, etc. Não
S3_REGION Usado para uploads de arquivos de usuário, avatares, etc. Não
S3_BUCKET Usado para uploads de arquivos de usuário, avatares, etc. Não
S3_HOST Usado para uploads de arquivos de usuário, avatares, etc. Não
CACHE_DIR Local para armazenar cache offline opcional, para quando o BD não estiver disponível. Periodicamente atualizado com os 100 principais threads. Não
BACKUP_DIR Local para armazenar dados para quando o BD não estiver disponível. Se um comentário for enviado quando o BD não estiver disponível, vai para aqui e é processado depois. Não

Observe que todas as variáveis relacionadas a domínio usam o sufixo _HOST ou _ADDR. A diferença é:

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

O EMAIL_CONFIG_PATH deve conter um caminho para um arquivo JSON com o seguinte formato de exemplo:

Configuração de E-mail
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

No exemplo acima definimos um transporte de e-mail SMTP padrão chamado mailgun. Também definimos um transporte especial que usamos especificamente para e-mails @yahoo.com. Em alguns cenários é desejável usar um provedor específico ou um IP de envio para um domínio, para ajustar a entrega. Isso é opcional.

DocumentDB

Ao conectar-se ao DocumentDB você deverá especificar MONGO_ENABLE_SSL=true MONGO_SSL_CA=/some/path.pem para ser compatível com as configurações padrão.


Tempo de inatividade do banco de dados e modo de manutenção Internal Link

FastComments oferece um modo de manutenção automático. Se o banco de dados ficar offline, ele pode continuar servindo tópicos de comentários populares.

Além disso, no modo de manutenção, todos os comentários são salvos em BACKUP_DIR. Eles serão processados (verificados quanto a spam, etc.) e salvos assim que o sistema voltar online.

Isso é feito determinando, a cada hora, os 100 tópicos de comentários mais populares e armazenando em cache seu conteúdo no disco. A determinação dos 100 principais tópicos já é feita a partir de um estado pré-calculado, portanto não é um trabalho periódico pesado.

Isso é completamente opcional e só é habilitado se CACHE_DIR e BACKUP_DIR estiverem configurados. Isso, é claro, torna os nós da aplicação com estado, no entanto é um estado que pode ser perdido a qualquer momento sem causar mau funcionamento da aplicação.

Observe que, no modo de manutenção, a autenticação adequada dos tópicos de comentários não pode ser realizada, então apenas tópicos que são seguramente considerados públicos são periodicamente salvos em backup.

No modo de manutenção, muitos recursos não estão disponíveis.

Código do Widget Internal Link

Os trechos de código e bibliotecas de front-end para On-Prem são os mesmos do produto SaaS. No entanto, você deve especificar apiHost e o caminho correto do script:

Código de Comentários 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 // ... também é possível passar o payload de SSO, etc.
9 });
10</script>
11

O exemplo acima é muito simples. Também podemos usar as bibliotecas oficiais para React, Angular, Vue, Svelte, etc, libraries.


API Internal Link

A API pode ser acessada da mesma forma que o produto SaaS regular, ou seja, você faria login no painel On-Prem para criar chaves de API e usar essas chaves para acessar a API. A API endpoints são os mesmos on-prem que para o produto SaaS.

Múltiplos domínios Internal Link

Sua instalação FastComments On-Prem pode servir comentários para múltiplos domínios internos, por exemplo app.mycorp.org e hr.mycorp.org. Você pode configurar esses separadamente, mas hospedá-los em uma única instalação On-Prem criando Customization Rules separadas para configurar seus comportamentos individuais.

Segurança Internal Link

Por padrão, o FastComments assume que os tópicos de comentários são públicos. Para adicionar uma camada de segurança, recomenda-se criar uma Regra de Personalização com a Requires SSO marcada. Isso fará com que todos os endpoints relacionados a comentários exijam autenticação SSO.

Conclusão

Você chegou ao fim da documentação On Prem. Informe-nos sobre quaisquer comentários ou perguntas adicionais que você tenha abaixo - você pode também entrar em contato conosco através da Página de Suporte.