
Lingua 🇮🇹 Italiano
Contesto
Primi passi
Distribuzione
Architettura
Installazione e integrazione
Suggerimenti sulla sicurezza
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 
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.
Da dove iniziare 
Per iniziare a distribuire FastComments On Prem, contattaci.
Una volta configurato, puoi sempre scaricare l'ultima immagine docker dalla pagina delle licenze.
Istanze 
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 
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. | Sì | production, dev | |
| MONGO_URI | URI di connessione al DB. | Sì | ||
| 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. | Sì | ||
| SESSION_SECRET | Chiave usata per firmare le sessioni. | Sì | ||
| SESSION_STORE_SECRET | Chiave usata per firmare/hashare le sessioni nello storage. Deve essere diversa da SESSION_SECRET. | Sì | ||
| HOSTNAME | Il nome host dove è distribuito FastComments (dashboard admin ecc.). NON deve includere porta o protocollo. | Sì | example.com | |
| HOST_ADDR | Un URI accessibile dove è distribuito FastComments (dashboard admin ecc.). | Sì | https://example.com | |
| EMAIL_CONFIG_PATH | Un percorso nel file system locale dove si trova la configurazione email (SMTP, mapping dominio/fornitore, ecc.). | Sì | /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:

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 
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.
Blocchi 
Come qualsiasi sistema distribuito, FastComments necessita di un meccanismo per bloccare risorse e procedure. Questi blocchi possono essere monitorati tramite l'endpoint /locks-in-progress.
Ad esempio, ecco l'endpoint sul nostro shard US.
Questo può essere utile per capire perché il sistema è bloccato o sotto carico. Se magari un SRE vuole capire perché il sistema sta riscontrando un elevato utilizzo della CPU, potrebbe controllare questo endpoint per ottenere il nome del cron che si comporta in modo anomalo.
Codice del widget 
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:

L'esempio sopra è molto semplice. Possiamo anche usare le librerie di prima parte per React, Angular, Vue, Svelte, ecc.
API 
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 
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 
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.