FastComments.com


Hostovanje FastComments lokalno (On-Prem)

FastComments pruža nekoliko rešenja za postavljanje. Najčešći slučaj je kada mi hostujemo aplikaciju za vas.

Međutim, razumemo da neki korisnici ne mogu da čuvaju svoje informacije u oblaku i zahtevaju da svi njihovi podaci budu hostovani lokalno.

Ova dokumentacija pokriva taj slučaj upotrebe.


Šta je uključeno Internal Link

FastComments On Prem vam omogućava da implementirate naše rešenje za komentare uživo, uključujući sve alate za moderaciju i administraciju, na sopstvenom hardveru.

To znači da imate kontrolu nad svojim podacima, i da se sistem komentara može ograničiti na vašu lokalnu LAN mrežu ili korporativnu mrežu.

Instance Internal Link

Required Components

For On-Prem, FastComments just consists of an application server and a database. We have simplified the deployment so that the application can serve all traffic directly without adding other components.

The application server is provided in a Docker image and can be deployed with any container management solution.

The database, MongoDB, can be self-ran or hosted by another provider like AWS DocumentDB or MongoDB Atlas.

FastComments is currently tested with MongoDB 7, however we aim to be DocumentDB compatible to ease deployment.

Instance Sizes

You will find that FastComments is fairly well optimized and doesn't require large machines for the application itself to keep low P99s.

All batch and cron jobs use streaming to limit total memory usage.

The below tables for the application server and database can assist with sizing.

Application Server Instances

Concurrent UsersTotal Cluster CPUsTotal Cluster Memory
1001256mb
1K2512mb
10K81gb
100K328gb
1M6464gb

For example, a single core serving around 100 comment threads a second usually never uses more than 250mb RSS.

Database Server Instances

Sizing the database depends on working set size, which is the amount of data you access at a given point in time, as well as concurrent requests.

FastComments is fairly kind to Mongo, in that for the hot queries it uses index hints, streaming cursors, and has concurrency limits in various areas to prevent overloading of downstream systems.

The below is a general guideline on database instance sizes. Napomena: ovo je po instanci, a ne ukupni resursi u klasteru.

Concurrent UsersComments StoredCPUs Per InstanceMemory Per Instance
1001k1256mb
1K5k2512mb
10K100k82gb
100K500k168gb
1M5M3232gb

The above tables are conservative estimates. You may find actual requirements differ based on your specific configuration (page sizes, comment volume, etc).

Konfiguracija Internal Link

FastComments koristi promenljive okruženja za konfiguraciju. Sledeća lista prikazuje sve podržane promenljive koje su relevantne za On-Prem.

PromenljivaPodrazumevanoInformacijeObaveznoPrimeri ili važeće vrednosti
NODE_ENVTip okruženja.Daproduction, dev
MONGO_URIURI za povezivanje sa bazom podataka.Da
MONGO_ENABLE_SSLfalseOmogućava korišćenje SSL-a za povezivanje sa bazom podataka.Netrue, false
MONGO_ENABLE_SSL_VALIDATEfalseOmogućava validaciju sertifikata protiv CA prilikom povezivanja na Mongo.Netrue, false
MONGO_SSL_CAMongo SSL CA pem fajl.Ne/path/to/some-cert.pem
ADMIN_NOTIFICATIONS_EMAILE-pošta na koju treba da stignu važna sistemska obaveštenja.Neadmin-group@bigcorp.com
IP_HASH_SALTSalt za heširanje IP adresa.Da
SESSION_SECRETKljuč koji se koristi za potpisivanje sesija.Da
SESSION_STORE_SECRETKljuč koji se koristi za potpisivanje/heširanje sesija u skladištu. Mora biti različit od SESSION_SECRET.Da
HOSTNAMEIme hosta na kojem je FastComments postavljen (admin kontrolna tabla itd). NE bi trebalo da uključuje port ili protokol.Daexample.com
HOST_ADDRPristupačan URI na kojem je FastComments postavljen (admin kontrolna tabla itd).Dahttps://example.com
EMAIL_CONFIG_PATHPutanja u lokalnom fajl sistemu do konfiguracije e-pošte (SMTP, mapiranja domena/provajdera itd).Da/my/config.json
EMAIL_DEFAULT_FROM_NAMEFastComments RobotZaglavlje "From Name" u e-poruci.NeMy Company Name
EMAIL_DEFAULT_FOOTER_LOGO/images/logo-32-2020-01.pngLogo u podnožju e-poruke.Nehttps://exmaple.com/footer.png
EMAIL_DEFAULT_TRANSPORTZamena za "defaultTransport" u EMAIL_CONFIG_PATH. Korisno za postavljanje istog fajla konfiguracije u različitim okruženjima.NemyTransportName
ON_PREM_TENANT_IDID vašeg naloga na fastcomments.com. Koristi se za registraciju vašeg licencnog ključa.Ne
ON_PREM_LICENSE_KEYOn-prem licencni ključ.Ne
GIPHY_API_KEYGiphy API ključ. Ako nije naveden, trebalo bi da napravite pravilo u konfiguraciji koje onemogućava izbor gif-ova.Ne
GIPHY_DEFAULT_RATINGpgKoristi se za Giphy integraciju. Može biti prepisano pravilima za prilagođavanje vidžeta.Neg, pg, pg-13, r
OPENAI_SECRET_KEYKoristi se za OpenAI funkcije kao što je opcionalna GPT zasnovana detekcija spama.Ne
CDN_HOST_ADDRIme hosta odakle će se preuzimati resursi. Podrazumevano je vrednost HOSTNAME.Neexample.com
LARGE_FILE_HOST_ADDRIme hosta odakle će se preuzimati veliki fajlovi (poput eksportovanih podataka). Podrazumevano je vrednost CDN_HOST_ADDR.Neexample.com
LARGE_FILE_LOCATION_TYPElocal_diskGde treba čuvati velike fajlove, poput eksportovanih podataka.Nelocal_disk, s3
FROM_EMAIL_HOSTIme hosta odakle treba slati e-poruke.Neexample.com
COOKIE_IDfastcomments.sidIme fastcomments kolačića.Ne
COOKIE_HOSTNAME.fastcomments.comVrednost polja "hostname" kolačića. Preporučeno je prefiksirati tačkom.Ne.example.com
S3_ACCESS_KEYKoristi se za korisnička otpremanja fajlova, avatare itd. Podrazumevano lokalni fajl sistem ako nije definisano.Ne
S3_SECRET_KEYKoristi se za korisnička otpremanja fajlova, avatare itd.Ne
S3_REGIONKoristi se za korisnička otpremanja fajlova, avatare itd.Ne
S3_BUCKETKoristi se za korisnička otpremanja fajlova, avatare itd.Ne
S3_HOSTKoristi se za korisnička otpremanja fajlova, avatare itd.Ne
CACHE_DIRLokacija za opcioni offline keš, za slučaj da DB nije dostupan. Periodično se osvežava sa top 100 niti komentara.Ne
BACKUP_DIRLokacija za čuvanje podataka za slučaj da DB nije dostupan. Ako je komentar poslat dok DB nije dostupan, ide ovde i obrađuje se kasnije.Ne

Napomena da sve promenljive vezane za domene koriste sufikse _HOST ili _ADDR. Razlika je:

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

EMAIL_CONFIG_PATH treba da sadrži putanju do JSON fajla sa sledećim primerom formata:

Konfiguracija e-pošte
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

U gornjem primeru definišemo podrazumevani SMTP email transport nazvan mailgun. Takođe definišemo specijalan transport koji koristimo posebno za @yahoo.com adrese. U nekim scenarijima poželjno je koristiti specifičnog provajdera ili IP za slanje za određeni domen kako bi se podesila isporuka. Ovo je opciono.

DocumentDB

Kada se povezujete na DocumentDB treba da navedete MONGO_ENABLE_SSL=true MONGO_SSL_CA=/some/path.pem da biste bili kompatibilni sa podrazumevanim podešavanjima.


Zastoj baze podataka i režim održavanja Internal Link

FastComments podržava automatski režim održavanja. Ako baza podataka padne, može nastaviti da servisira popularne niti komentara.

Pored toga, u režimu održavanja svi komentari se čuvaju u BACKUP_DIR. Oni će biti obrađeni (provereni na spam, itd.) i sačuvani kada sistem ponovo bude online.

To radi tako što, svakog sata, određuje 100 najpopularnijih niti komentara i kešira njihov sadržaj na disku. Određivanje 100 najpopularnijih niti već se radi iz prethodno izračunatog stanja, tako da nije zahtevan periodični posao.

Ovo je potpuno opciono, i omogućeno je samo ako su postavljeni CACHE_DIR i BACKUP_DIR. Ovo naravno čini čvorove aplikacije sa stanjem, međutim to je stanje koje može biti izgubljeno u bilo kom trenutku bez izazivanja nepravilnog rada aplikacije.

Imajte na umu da u režimu održavanja pravilna autentifikacija niti komentara ne može biti izvršena, pa se periodično prave rezervne kopije samo niti koje se bezbedno smatraju javnim.

U režimu održavanja mnoge funkcije nisu dostupne.

Kod vidžeta Internal Link


Fragmenti front-end koda i biblioteke za On-Prem su isti kao i za SaaS proizvod. Međutim, morate navesti apiHost i tačnu putanju skripte:

Kod komentara za 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 // ... možete takođe proslediti SSO payload itd.
10 }];
11</script>
12

Gore je vrlo jednostavan primer. Takođe bismo mogli koristiti 1st-party biblioteke za React, Angular, Vue, Svelte itd.


API Internal Link

API je dostupan isto kao i običan SaaS proizvod u tom smislu da biste se prijavili u On-Prem dashboard da kreirate API ključeve i koristili te ključeve za pristup API-ju. API krajnje tačke su iste on-prem kao i za SaaS proizvod.

Više domena Internal Link

Vaša On-Prem FastComments instalacija može da posluži komentare više internih domena, na primer app.mycorp.org i hr.mycorp.org. Možete ih konfigurisati zasebno, ali ih hostovati na jednoj On-Prem instalaciji kreiranjem zasebnih pravila za prilagođavanje kako biste podesili njihovo pojedinačno ponašanje.

Bezbednost Internal Link

Podrazumevano, FastComments pretpostavlja da su niti komentara javne. Da biste dodali sloj bezbednosti, preporučuje se kreiranje pravila prilagođavanja sa označenom opcijom Requires SSO.

To će uzrokovati da svi endpointi povezani sa komentarima zahtevaju SSO autentifikaciju.

Zaključak

Stigli ste do kraja dokumentacije za On Prem. Javite nam koje dodatne komentare ili pitanja imate ispod - možete takođe da nas kontaktirate putem Stranice za podršku.