FastComments.com


Hosting FastComments in sede

FastComments fornisce diverse soluzioni per la distribuzione. La più comune è quando ospitiamo l'applicazione per voi.

Tuttavia, comprendiamo che alcuni clienti non possono conservare le loro informazioni nel cloud e richiedono l'hosting di tutti i loro dati in sede.

Questa documentazione copre questo caso d'uso.


Cosa è incluso Internal Link


FastComments On Prem consente di distribuire la nostra soluzione di commenti in tempo reale, inclusi tutti gli strumenti di moderazione e amministrazione, sul proprio hardware.

Ciò significa che avete il controllo sui vostri dati, e il sistema di commenti può essere limitato alla vostra LAN locale o alla rete aziendale.

Istanze Internal Link

Componenti necessari

Per On-Prem, FastComments consiste solo in un server applicativo e un database. Abbiamo semplificato il deployment in modo che l'applicazione possa servire tutto il traffico direttamente senza aggiungere altri componenti.

Il server applicativo è fornito in un'immagine Docker e può essere distribuito con qualsiasi soluzione di gestione dei container.

Il database, MongoDB, può essere gestito autonomamente o ospitato da un altro provider come AWS DocumentDB o MongoDB Atlas.

FastComments è attualmente testato con MongoDB 7, tuttavia puntiamo a essere compatibili con DocumentDB per facilitare il deployment.

Dimensioni delle istanze

Scoprirai che FastComments è abbastanza ottimizzato e non richiede macchine grandi per l'applicazione stessa per mantenere P99 bassi.

Tutti i job batch e cron utilizzano lo streaming per limitare l'uso totale della memoria.

Le tabelle sottostanti per il server applicativo e il database possono aiutare con il dimensionamento.

Istanze del server applicativo

Utenti concorrenti CPU totali del cluster Memoria totale del cluster
100 1 256mb
1K 2 512mb
10K 8 1gb
100K 32 8gb
1M 64 64gb

Ad esempio, un singolo core che serve circa 100 thread di commenti al secondo di solito non usa mai più di 250mb di RSS.

Istanze del server database

Il dimensionamento del database dipende dalla dimensione del working set, che è la quantità di dati a cui si accede in un dato momento, oltre che dalle richieste concorrenti.

FastComments è abbastanza gentile con Mongo, in quanto per le query "hot" usa index hints, cursori in streaming e ha limiti di concorrenza in varie aree per evitare il sovraccarico dei sistemi downstream.

Di seguito è riportata una linea guida generale sulle dimensioni delle istanze del database. Nota che questo è per istanza, non le risorse totali nel cluster.

Utenti concorrenti Commenti memorizzati CPU per istanza Memoria per istanza
100 1k 1 256mb
1K 5k 2 512mb
10K 100k 8 2gb
100K 500k 16 8gb
1M 5M 32 32gb

Le tabelle sopra sono stime conservative. Potresti scoprire che i requisiti effettivi differiscono in base alla tua configurazione specifica (dimensione delle pagine, volume dei commenti, ecc).

Configurazione Internal Link

FastComments utilizza variabili d'ambiente per la configurazione. La seguente lista illustra tutte le variabili supportate rilevanti per On-Prem.

Variable Default Info Required Examples or Valid Values
NODE_ENV Tipo di ambiente. production, dev
MONGO_URI URI di connessione al DB.
MONGO_ENABLE_SSL false Abilita l'uso di SSL per connettersi al database. No true, false
MONGO_ENABLE_SSL_VALIDATE false Abilita la validazione del certificato rispetto alla CA quando ci si connette a Mongo. No true, false
MONGO_SSL_CA File pem CA per SSL di Mongo. No /path/to/some-cert.pem
ADMIN_NOTIFICATIONS_EMAIL Email dove inviare notifiche importanti relative al sistema. No admin-group@bigcorp.com
IP_HASH_SALT Salt per l'hashing degli indirizzi IP.
SESSION_SECRET Chiave usata per firmare le sessioni.
SESSION_STORE_SECRET Chiave usata per firmare/hashare le sessioni nello storage. Deve essere diversa da SESSION_SECRET.
HOSTNAME Il nome host dove è distribuito FastComments (dashboard admin ecc.). NON deve includere porta o protocollo. example.com
HOST_ADDR Un URI accessibile dove è distribuito FastComments (dashboard admin ecc.). https://example.com
EMAIL_CONFIG_PATH Un percorso nel file system locale dove si trova la configurazione email (SMTP, mapping dominio/fornitore, ecc.). /my/config.json
EMAIL_DEFAULT_FROM_NAME FastComments Robot Header "From Name" delle email. No My Company Name
EMAIL_DEFAULT_FOOTER_LOGO /images/logo-32-2020-01.png Logo nel footer delle email. No https://exmaple.com/footer.png
EMAIL_DEFAULT_TRANSPORT Override per "defaultTransport" in EMAIL_CONFIG_PATH. Utile per distribuire lo stesso file di configurazione in ambienti diversi. No myTransportName
ON_PREM_TENANT_ID L'ID del tuo account su fastcomments.com. Usato per registrare la tua license key. No
ON_PREM_LICENSE_KEY Una license key per on-prem. No
GIPHY_API_KEY Chiave API Giphy. Se non specificata, dovresti creare una regola di configurazione che disabiliti il selettore di gif. No
GIPHY_DEFAULT_RATING pg Usato per l'integrazione Giphy. Può anche essere sovrascritto con regole di personalizzazione del widget. No g, pg, pg-13, r
OPENAI_SECRET_KEY Usato per funzionalità basate su OpenAI come il rilevamento spam opzionale basato su GPT. No
CDN_HOST_ADDR Il nome host da cui verranno recuperate le risorse. Di default prende il valore di HOSTNAME. No example.com
LARGE_FILE_HOST_ADDR Il nome host da cui verranno recuperati i file di grandi dimensioni (come gli export). Di default prende il valore di CDN_HOST_ADDR. No example.com
LARGE_FILE_LOCATION_TYPE local_disk Dove dovrebbero essere memorizzati i file di grandi dimensioni, come gli export. No local_disk, s3
FROM_EMAIL_HOST Il nome host da cui dovrebbero essere inviate le email. No example.com
COOKIE_ID fastcomments.sid Nome del cookie fastcomments. No
COOKIE_HOSTNAME .fastcomments.com Valore del campo "hostname" del cookie. Si raccomanda di anteporre un punto. No .example.com
S3_ACCESS_KEY Usato per upload file degli utenti, avatar, ecc. Di default usa il filesystem locale se non definito. No
S3_SECRET_KEY Usato per upload file degli utenti, avatar, ecc. No
S3_REGION Usato per upload file degli utenti, avatar, ecc. No
S3_BUCKET Usato per upload file degli utenti, avatar, ecc. No
S3_HOST Usato per upload file degli utenti, avatar, ecc. No
CACHE_DIR Posizione per memorizzare la cache offline opzionale, per quando il DB non è disponibile. Viene aggiornato periodicamente con le top 100 discussioni. No
BACKUP_DIR Posizione per memorizzare i dati per quando il DB non è disponibile. Se un commento viene inviato quando il DB non è disponibile, finisce qui e viene processato dopo. No

Nota che tutte le variabili relative al dominio utilizzano il suffisso _HOST o _ADDR. La differenza è:

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

Il EMAIL_CONFIG_PATH dovrebbe contenere un percorso a un file JSON con il seguente formato di esempio:

Configurazione Email
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

Nell'esempio sopra definiamo un trasporto email SMTP di default chiamato mailgun. Definiamo anche un trasporto speciale che usiamo specificamente per le email @yahoo.com. In alcuni scenari è desiderabile usare un provider o un indirizzo IP di invio specifico per un dominio per ottimizzare la consegna. Questo è opzionale.

DocumentDB

Quando ti connetti a DocumentDB vorrai specificare MONGO_ENABLE_SSL=true MONGO_SSL_CA=/some/path.pem per essere compatibile con le impostazioni di default.


Interruzione del database e modalità di manutenzione Internal Link


FastComments supporta una modalità di manutenzione automatica. Se il database va offline, può continuare a servire i thread di commenti più popolari.

Inoltre, in modalità di manutenzione, tutti i commenti vengono salvati in BACKUP_DIR. Verranno elaborati (controllati per spam, ecc.) e salvati una volta che il sistema sarà nuovamente online.

Lo fa determinando, ogni ora, i 100 thread di commenti più popolari e memorizzando la loro cache su disco. La determinazione dei 100 thread viene già effettuata a partire da uno stato pre-calcolato, quindi non è un lavoro periodico pesante.

Questo è completamente opzionale ed è attivato solo se CACHE_DIR e BACKUP_DIR sono impostati. Questo, ovviamente, rende i nodi dell'applicazione con stato, tuttavia si tratta di uno stato che può essere perso in qualsiasi momento senza causare malfunzionamenti dell'applicazione.

Nota che in modalità di manutenzione non è possibile eseguire correttamente l'autenticazione dei thread di commenti, quindi vengono eseguiti backup periodici solo dei thread che possono essere considerati pubblici in modo sicuro.

In modalità di manutenzione molte funzionalità non sono disponibili.


Codice del widget Internal Link


I frammenti di codice front-end e le librerie per On-Prem sono gli stessi del prodotto SaaS. Tuttavia, è necessario specificare apiHost e il percorso dello script corretto:

Codice dei commenti per 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 // ... si può anche passare il payload SSO, ecc.
9 });
10</script>
11

L'esempio sopra è molto semplice. Possiamo anche usare le librerie di prima parte per React, Angular, Vue, Svelte, ecc.


API Internal Link

L'API può essere accessata esattamente come il prodotto SaaS regolare: ti colleghi alla dashboard On-Prem per creare chiavi API e usare quelle chiavi per accedere all'API. L'API endpoint sono gli stessi on-prem come lo sono per il prodotto SaaS.

Domini multipli Internal Link

La tua installazione On-Prem FastComments può servire commenti a più domini interni, per esempio app.mycorp.org e hr.mycorp.org. Puoi configurare questi separatamente ma ospitarli su un'unica installazione On-Prem creando Customization Rules separate per configurare i loro comportamenti individuali.

Sicurezza Internal Link


Per impostazione predefinita, FastComments presume che i thread dei commenti siano pubblici. Per aggiungere un livello di sicurezza, è consigliabile creare una Regola di personalizzazione con l'opzione

Requires SSO selezionata. Questo farà sì che tutti gli endpoint relativi ai commenti richiedano l'autenticazione SSO.

In conclusione

Avete raggiunto la fine della documentazione On Prem. Fateci sapere quali ulteriori commenti o domande avete qui sotto - potete anche contattarci tramite la Pagina di supporto.