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 Users Total Cluster CPUs Total Cluster Memory
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. Napomena: ovo je po instanci, a ne ukupni resursi u klasteru.

Concurrent Users Comments Stored CPUs Per Instance Memory Per Instance
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 promenljive okruženja za konfiguraciju. Sledeća lista prikazuje sve podržane promenljive koje su relevantne za On-Prem.

Promenljiva Podrazumevano Informacije Obavezno Primeri ili važeće vrednosti
NODE_ENV Tip okruženja. Da production, dev
MONGO_URI URI za povezivanje sa bazom podataka. Da
MONGO_ENABLE_SSL false Omogućava korišćenje SSL-a za povezivanje sa bazom podataka. Ne true, false
MONGO_ENABLE_SSL_VALIDATE false Omogućava validaciju sertifikata protiv CA prilikom povezivanja na Mongo. Ne true, false
MONGO_SSL_CA Mongo SSL CA pem fajl. Ne /path/to/some-cert.pem
ADMIN_NOTIFICATIONS_EMAIL E-pošta na koju treba da stignu važna sistemska obaveštenja. Ne admin-group@bigcorp.com
IP_HASH_SALT Salt za heširanje IP adresa. Da
SESSION_SECRET Ključ koji se koristi za potpisivanje sesija. Da
SESSION_STORE_SECRET Ključ koji se koristi za potpisivanje/heširanje sesija u skladištu. Mora biti različit od SESSION_SECRET. Da
HOSTNAME Ime hosta na kojem je FastComments postavljen (admin kontrolna tabla itd). NE bi trebalo da uključuje port ili protokol. Da example.com
HOST_ADDR Pristupačan URI na kojem je FastComments postavljen (admin kontrolna tabla itd). Da https://example.com
EMAIL_CONFIG_PATH Putanja u lokalnom fajl sistemu do konfiguracije e-pošte (SMTP, mapiranja domena/provajdera itd). Da /my/config.json
EMAIL_DEFAULT_FROM_NAME FastComments Robot Zaglavlje "From Name" u e-poruci. Ne My Company Name
EMAIL_DEFAULT_FOOTER_LOGO /images/logo-32-2020-01.png Logo u podnožju e-poruke. Ne https://exmaple.com/footer.png
EMAIL_DEFAULT_TRANSPORT Zamena za "defaultTransport" u EMAIL_CONFIG_PATH. Korisno za postavljanje istog fajla konfiguracije u različitim okruženjima. Ne myTransportName
ON_PREM_TENANT_ID ID vašeg naloga na fastcomments.com. Koristi se za registraciju vašeg licencnog ključa. Ne
ON_PREM_LICENSE_KEY On-prem licencni ključ. Ne
GIPHY_API_KEY Giphy API ključ. Ako nije naveden, trebalo bi da napravite pravilo u konfiguraciji koje onemogućava izbor gif-ova. Ne
GIPHY_DEFAULT_RATING pg Koristi se za Giphy integraciju. Može biti prepisano pravilima za prilagođavanje vidžeta. Ne g, pg, pg-13, r
OPENAI_SECRET_KEY Koristi se za OpenAI funkcije kao što je opcionalna GPT zasnovana detekcija spama. Ne
CDN_HOST_ADDR Ime hosta odakle će se preuzimati resursi. Podrazumevano je vrednost HOSTNAME. Ne example.com
LARGE_FILE_HOST_ADDR Ime hosta odakle će se preuzimati veliki fajlovi (poput eksportovanih podataka). Podrazumevano je vrednost CDN_HOST_ADDR. Ne example.com
LARGE_FILE_LOCATION_TYPE local_disk Gde treba čuvati velike fajlove, poput eksportovanih podataka. Ne local_disk, s3
FROM_EMAIL_HOST Ime hosta odakle treba slati e-poruke. Ne example.com
COOKIE_ID fastcomments.sid Ime fastcomments kolačića. Ne
COOKIE_HOSTNAME .fastcomments.com Vrednost polja "hostname" kolačića. Preporučeno je prefiksirati tačkom. Ne .example.com
S3_ACCESS_KEY Koristi se za korisnička otpremanja fajlova, avatare itd. Podrazumevano lokalni fajl sistem ako nije definisano. Ne
S3_SECRET_KEY Koristi se za korisnička otpremanja fajlova, avatare itd. Ne
S3_REGION Koristi se za korisnička otpremanja fajlova, avatare itd. Ne
S3_BUCKET Koristi se za korisnička otpremanja fajlova, avatare itd. Ne
S3_HOST Koristi se za korisnička otpremanja fajlova, avatare itd. Ne
CACHE_DIR Lokacija za opcioni offline keš, za slučaj da DB nije dostupan. Periodično se osvežava sa top 100 niti komentara. Ne
BACKUP_DIR Lokacija 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

Front-end kod primeri 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 // ... takođe možete proslediti SSO payload itd.
9 });
10</script>
11

Gore je vrlo jednostavan primer. Takođe možemo 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.