
Jezik 🇭🇷 Hrvatski
Pozadina
Kako započeti
Implementacija
Arhitektura
Instalacija i integracija
Sigurnosni savjeti
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 
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.
Gdje započeti 
Za početak postavljanja FastComments On Prem, kontaktirajte nas.
Nakon postavljanja uvijek možete preuzeti najnoviju docker image s stranice s licencama.
Instancije 
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 
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:

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 
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.
Zaključavanja 
Kao i svaki distribuirani sustav, FastComments treba neki način za zaključavanje resursa i procedura. Ta zaključavanja se mogu pratiti putem /locks-in-progress endpointa.
Na primjer, evo endpointa na našem US shardu.
Ovo može biti korisno za utvrđivanje zašto je sustav zapeo ili pod opterećenjem. Ako, primjerice, SRE želi vidjeti zašto sustav ima visoko opterećenje CPU-a, mogli bi provjeriti ovaj endpoint kako bi dobili ime crona koji se ne ponaša ispravno.
Kod widgeta 
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:

Gore je vrlo jednostavan primjer. Također možemo koristiti službene biblioteke za React, Angular, Vue, Svelte itd.
API 
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 
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.
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.