
Jezik 🇷🇸 Srpski (Latinica)
Pozadina
Kako početi
Raspoređivanje
Arhitektura
Instalacija i integracija
Saveti za bezbednost
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 
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.
Gde početi 
Da biste započeli implementaciju FastComments On Prem, obratite nam se.
Nakon podešavanja, uvek možete preuzeti najnoviju docker image sa stranice za licence.
Instance 
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 
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:

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 
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.
Zaključavanja 
Kao i svaki distribuirani sistem, FastComments treba način za zaključavanje resursa i procedura. Ova zaključavanja se mogu nadgledati putem endpointa /locks-in-progress.
Na primer, evo endpointa na našem US shardu.
Ovo može biti korisno da se vidi zašto je sistem zablokiran ili pod velikim opterećenjem. Ako, na primer, SRE želi da vidi zašto sistem ima visok CPU load, mogli bi proveriti ovaj endpoint da dobiju ime cron zadatka koji se nepravilno ponaša.
Kod vidžeta 
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:

Gore je vrlo jednostavan primer. Takođe možemo koristiti 1st-party biblioteke za React, Angular, Vue, Svelte, itd.
API 
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 
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.
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.