
Idioma 🇧🇷 Português (Brasil)
Contexto
Primeiros passos
Implantação
Arquitetura
Instalação e Integração
Dicas de segurança
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 
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.
Por onde começar 
Para começar a implantar o FastComments On Prem, entre em contato conosco.
Após a configuração, você sempre poderá baixar a imagem Docker mais recente na página de licenças.
Instâncias 
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 
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:

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 
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.
Bloqueios 
Como qualquer sistema distribuído, o FastComments precisa de alguma forma de bloquear recursos e procedimentos. Esses bloqueios podem ser monitorados via o endpoint /locks-in-progress.
Por exemplo, aqui está o endpoint do nosso shard dos EUA.
Isto pode ser útil para ver por que o sistema está travado ou sob carga. Se, por exemplo, um SRE quiser saber por que o sistema está apresentando alta carga de CPU, ele poderia verificar este endpoint para obter o nome do cron que está se comportando mal.
Código do Widget 
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:

O exemplo acima é muito simples. Também podemos usar as bibliotecas oficiais para React, Angular, Vue, Svelte, etc, libraries.
API 
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 
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.
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.