FastComments.com


Hostanje FastCommentsa na lokaciji

FastComments nudi nekoliko rješenja za implementaciju. Najčešći slučaj je kada mi hostamo aplikaciju za vas.

Međutim, razumijemo da neki korisnici ne mogu pohranjivati svoje informacije u oblaku, i zahtijevaju hostanje svih svojih podataka na lokaciji.

Ova dokumentacija pokriva taj slučaj.


Što je uključeno Internal Link

FastComments On Prem vam omogućava da implementirate naše rješenje za komentiranje uživo, uključujući sve alate za moderiranje i administraciju, na vlastitom hardveru.

To znači da imate kontrolu nad svojim podacima, a sustav komentiranja može biti ograničen na vaš lokalni LAN ili korporativnu mrežu.

Instancije 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

Istovremeni korisnici Ukupni CPU-ovi klastera Ukupna memorija klastera
100 1 256mb
1K 2 512mb
10K 8 1gb
100K 32 8gb
1M 64 64gb

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. Note that this is per instance, not total resources in the cluster.

Istovremeni korisnici Spremljeni komentari CPU-ovi po instanci Memorija po instanci
100 1k 1 256mb
1K 5k 2 512mb
10K 100k 8 2gb
100K 500k 16 8gb
1M 5M 32 32gb

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 varijable okoline za konfiguraciju. Sljedeći popis navodi sve podržane varijable koje su relevantne za On-Prem.

Varijabla Zadano Info Obavezno Primjeri ili valjane vrijednosti
NODE_ENV Tip okoline. Da production, dev
MONGO_URI URI za povezivanje s bazom podataka. Da
MONGO_ENABLE_SSL false Omogućuje korištenje SSL-a za povezivanje s bazom podataka. Ne true, false
MONGO_ENABLE_SSL_VALIDATE false Omogućuje provjeru certifikata protiv CA pri povezivanju na Mongo. Ne true, false
MONGO_SSL_CA Mongo SSL CA pem datoteka. Ne /path/to/some-cert.pem
ADMIN_NOTIFICATIONS_EMAIL E-pošta na koju bi trebale stizati važne obavijesti vezane uz sustav. Ne admin-group@bigcorp.com
IP_HASH_SALT Salt (sol) za hashiranje IP adresa. Da
SESSION_SECRET Ključ koji se koristi za potpisivanje sesija. Da
SESSION_STORE_SECRET Ključ koji se koristi za potpisivanje/hashiranje sesija u spremištu. Mora biti različit od SESSION_SECRET. Da
HOSTNAME Hostname na kojem je FastComments postavljen (administratorska konzola itd.). NE smije uključivati port ili protokol. Da example.com
HOST_ADDR Dostupan URI na kojem je FastComments postavljen (administratorska konzola itd.). Da https://example.com
EMAIL_CONFIG_PATH Putanja na lokalnom datotečnom sustavu gdje se nalazi konfiguracija e-pošte (SMTP, mapiranja domena/ponuđača itd.). Da /my/config.json
EMAIL_DEFAULT_FROM_NAME FastComments Robot Polje "From Name" u zaglavlju e-pošte. Ne My Company Name
EMAIL_DEFAULT_FOOTER_LOGO /images/logo-32-2020-01.png Logo u podnožju e-pošte. Ne https://exmaple.com/footer.png
EMAIL_DEFAULT_TRANSPORT Override za "defaultTransport" u EMAIL_CONFIG_PATH. Korisno za raspoređivanje iste datoteke konfiguracije u različita okruženja. Ne myTransportName
ON_PREM_TENANT_ID ID vašeg računa na fastcomments.com. Koristi se za registraciju vašeg ključa licence. Ne
ON_PREM_LICENSE_KEY Licencni ključ za on-prem. Ne
GIPHY_API_KEY Giphy API ključ. Ako nije naveden, trebate stvoriti pravilo konfiguracije koje će onemogućiti odabir gifova. Ne
GIPHY_DEFAULT_RATING pg Koristi se za integraciju s Giphyjem. Može se također nadjačati pravilima prilagodbe widgeta. Ne g, pg, pg-13, r
OPENAI_SECRET_KEY Koristi se za značajke pokretane OpenAI-jem, poput opcionalne GPT-bazirane detekcije spama. Ne
CDN_HOST_ADDR Hostname s kojeg će se dohvaćati resursi. Zadano je vrijednost HOSTNAME. Ne example.com
LARGE_FILE_HOST_ADDR Hostname s kojeg se dohvaćaju velike datoteke (npr. izvozi). Zadano je vrijednost CDN_HOST_ADDR. Ne example.com
LARGE_FILE_LOCATION_TYPE local_disk Gdje bi se trebale pohranjivati velike datoteke, poput izvoza. Ne local_disk, s3
FROM_EMAIL_HOST Hostname s kojeg bi se trebale slati e-pošte. Ne example.com
COOKIE_ID fastcomments.sid Naziv fastcomments kolačića. Ne
COOKIE_HOSTNAME .fastcomments.com Vrijednost polja "hostname" u kolačiću. Preporučuje se prefiksati točkom. Ne .example.com
S3_ACCESS_KEY Koristi se za korisnička učitavanja datoteka, avatare itd. Zadano je lokalni datotečni sustav ako nije definirano. Ne
S3_SECRET_KEY Koristi se za korisnička učitavanja datoteka, avatare itd. Ne
S3_REGION Koristi se za korisnička učitavanja datoteka, avatare itd. Ne
S3_BUCKET Koristi se za korisnička učitavanja datoteka, avatare itd. Ne
S3_HOST Koristi se za korisnička učitavanja datoteka, avatare itd. Ne
CACHE_DIR Lokacija za pohranu opcionalne offline cache (predmemorije), za slučajeve kada DB nije dostupan. Periodično se osvježava s top 100 niti komentara. Ne
BACKUP_DIR Lokacija za pohranu podataka za slučajeve kada DB nije dostupan. Ako se komentar pošalje kada DB nije dostupan, ide ovdje i obrađuje se kasnije. Ne

Imajte na umu da sve varijable vezane uz domenu koriste sufiks _HOST ili _ADDR. Razlika je:

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

EMAIL_CONFIG_PATH bi trebao sadržavati putanju do JSON datoteke sa sljedećim primjernim formatom:

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 primjeru definiramo zadani SMTP transport e-pošte nazvan mailgun. Također definiramo poseban transport koji koristimo posebno za e-poruke @yahoo.com. U nekim scenarijima poželjno je koristiti određenog pružatelja usluge ili IP adresu za slanje za određenu domenu kako bi se poboljšala isporuka. Ovo je opcionalno.

DocumentDB

Prilikom povezivanja na DocumentDB trebate navesti MONGO_ENABLE_SSL=true MONGO_SSL_CA=/some/path.pem kako biste bili kompatibilni s zadanim postavkama.

Zastoji baze podataka i način održavanja Internal Link

FastComments podržava automatski način održavanja. Ako baza podataka padne, može nastaviti služiti popularne niti komentara.

Osim toga, u načinu održavanja svi se komentari spremaju u BACKUP_DIR. Oni će biti obrađeni (provjereni na spam itd.) i spremljeni kad sustav ponovno bude online.

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

Ovo je potpuno opcionalno i omogućeno je samo ako su postavljeni CACHE_DIR i BACKUP_DIR. To naravno čini čvorove aplikacije ovisnima o stanju, no to je stanje koje se može izgubiti u bilo kojem trenutku bez da uzrokuje pogrešno ponašanje aplikacije.

Imajte na umu da se u načinu održavanja ne može provesti ispravna autentikacija niti komentara, pa se povremeno spremaju samo niti koje se sigurno smatraju javnima.

U načinu održavanja mnoge značajke nisu dostupne.

Kod widgeta Internal Link


Front-end isječci koda i biblioteke za On-Prem su isti kao i za SaaS proizvod. Međutim, morate navesti apiHost i ispravnu putanju skripte:

Kod komentara za 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 // ... can also pass SSO payload etc.
9 });
10</script>
11

Gore je vrlo jednostavan primjer. Također možemo koristiti službene biblioteke za React, Angular, Vue, Svelte itd.


API Internal Link

Pristup API-ju je moguć na isti način kao i kod uobičajenog SaaS proizvoda — prijavite se u On-Prem nadzornu ploču kako biste stvorili API ključeve i koristili te ključeve za pristup API-ju. API endpoints su isti on-prem kao i za SaaS proizvod.

Više domena Internal Link

Vaša On-Prem FastComments instalacija može poslužiti komentare za više internih domena, na primjer app.mycorp.org i hr.mycorp.org. Možete ih konfigurirati zasebno, ali ih hostati na jednom On-Prem sustavu stvaranjem zasebnih Pravila prilagodbe kako biste konfigurirali njihova pojedinačna ponašanja.

Sigurnost Internal Link

Po zadanim postavkama, FastComments pretpostavlja da su niti komentara javne. Za dodatni sloj sigurnosti preporučuje se stvoriti pravilo prilagodbe s Requires SSO opcijom označenom. Time će svi endpointi povezani s komentarima zahtijevati SSO autentikaciju.

Zaključno

Stigli ste do kraja dokumentacije za On Prem. Obavijestite nas o svojim daljnjim komentarima ili pitanjima u nastavku - možete također nas kontaktirati putem Stranice za podršku.