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 ConcorrentesCPUs Totais do ClusterMemória Total do Cluster
1001256mb
1K2512mb
10K81gb
100K328gb
1M6464gb

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 ConcorrentesComentários ArmazenadosCPUs Por InstânciaMemória Por Instância
1001k1256mb
1K5k2512mb
10K100k82gb
100K500k168gb
1M5M3232gb

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ávelPadrãoInformaçõesObrigatórioExemplos ou Valores Válidos
NODE_ENVTipo de ambiente.Simproduction, dev
MONGO_URIURI de conexão com o BD.Sim
MONGO_ENABLE_SSLfalseHabilita o uso de SSL para conectar-se ao banco de dados.Nãotrue, false
MONGO_ENABLE_SSL_VALIDATEfalseHabilita a validação do certificado contra a CA ao conectar-se ao Mongo.Nãotrue, false
MONGO_SSL_CAArquivo PEM da CA para SSL do Mongo.Não/path/to/some-cert.pem
ADMIN_NOTIFICATIONS_EMAILE-mail para onde devem ser enviadas notificações importantes relacionadas ao sistema.Nãoadmin-group@bigcorp.com
IP_HASH_SALTSalt para hashing de endereços IP.Sim
SESSION_SECRETChave usada para assinar sessões.Sim
SESSION_STORE_SECRETChave usada para assinar/hash das sessões no armazenamento. Deve ser diferente de SESSION_SECRET.Sim
HOSTNAMEO hostname onde o FastComments está implantado (painel de administração etc). NÃO deve incluir porta ou protocolo.Simexample.com
HOST_ADDRUma URI acessível onde o FastComments está implantado (painel de administração etc).Simhttps://example.com
EMAIL_CONFIG_PATHUm 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_NAMEFastComments RobotCabeçalho "From Name" do e-mail.NãoMy Company Name
EMAIL_DEFAULT_FOOTER_LOGO/images/logo-32-2020-01.pngLogo do rodapé do e-mail.Nãohttps://exmaple.com/footer.png
EMAIL_DEFAULT_TRANSPORTSobrescrita para "defaultTransport" em EMAIL_CONFIG_PATH. Útil para implantar o mesmo arquivo de configuração em ambientes diferentes.NãomyTransportName
ON_PREM_TENANT_IDO ID da sua conta em fastcomments.com. Usado para registrar sua chave de licença.Não
ON_PREM_LICENSE_KEYUma chave de licença on-prem.Não
GIPHY_API_KEYChave 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_RATINGpgUsada para integração com o Giphy. Também pode ser sobrescrita com regras de customização do widget.Nãog, pg, pg-13, r
OPENAI_SECRET_KEYUsada para recursos com OpenAI, como detecção de spam opcional baseada em GPT.Não
CDN_HOST_ADDRO hostname de onde os assets serão buscados. Por padrão, usa o valor de HOSTNAME.Nãoexample.com
LARGE_FILE_HOST_ADDRO hostname de onde arquivos grandes (como exports) são buscados. Por padrão, usa o valor de CDN_HOST_ADDR.Nãoexample.com
LARGE_FILE_LOCATION_TYPElocal_diskOnde arquivos grandes, como exports, devem ser armazenados.Nãolocal_disk, s3
FROM_EMAIL_HOSTO hostname de onde os e-mails devem ser enviados.Nãoexample.com
COOKIE_IDfastcomments.sidO nome do cookie do fastcomments.Não
COOKIE_HOSTNAME.fastcomments.comO valor do campo "hostname" do cookie. Recomendado prefixar com ponto.Não.example.com
S3_ACCESS_KEYUsado 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_KEYUsado para uploads de arquivos de usuário, avatares, etc.Não
S3_REGIONUsado para uploads de arquivos de usuário, avatares, etc.Não
S3_BUCKETUsado para uploads de arquivos de usuário, avatares, etc.Não
S3_HOSTUsado para uploads de arquivos de usuário, avatares, etc.Não
CACHE_DIRLocal para armazenar cache offline opcional, para quando o BD não estiver disponível. Periodicamente atualizado com os 100 principais threads.Não
BACKUP_DIRLocal 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 do front-end e as bibliotecas 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 async src="https://my.host.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5 window.fcConfigs = [{
6 target: '#fastcomments-widget',
7 tenantId: "demo",
8 apiHost: "https://my.host.com"
9 // ... também pode passar payload SSO, etc.
10 }];
11</script>
12

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

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.