
Језик 🇧🇦 Српски (БиХ)
Позадина
Како почети
Распоређивање
Архитектура
Инсталација и интеграција
Савјети за безбједност
Хостовање FastComments на локацији
FastComments пружа неколико решења за распоређивање. Најчешће је да ми хостујемо апликацију за вас.
Међутим, разумијемо да неки купци не могу чувати своје податке у облаку и захтијевају хостовање свих својих података локално.
Ова документација покрива тај случај употребе.
Шта је укључено 
FastComments On Prem омогућава вам да распоредите наше решење за уживо коментарисање, укључујући све алате за модерацију и администрацију, на вашем сопственом хардверу.
Ово значи да имате контролу над својим подацима, и систем за коментарисање може бити ограничен на вашу локалну LAN или корпоративну мрежу.
Гдје почети 
Да бисте почели са постављањем FastComments On Prem, обратите нам се.
Након подешавања, увек можете преузети најновију docker image са странице за лиценцирање.
Инстанце 
Potrebne Komponente
Za On-Prem, FastComments se sastoji samo od aplikacionog servera i baze podataka. Pojednostavili smo deployment tako da aplikacija može direktno servisirati sav promet bez dodavanja drugih komponenti.
Aplikacioni server je dostavljen u Docker image-u i može se deploy-ati sa bilo kojim rješenjem za upravljanje kontejnerima.
Baza podataka, MongoDB, može se pokretati samostalno ili hostovati kod drugog provajdera kao što su AWS DocumentDB ili MongoDB Atlas.
FastComments je trenutno testiran sa MongoDB 7, međutim cilj nam je da bude kompatibilan sa DocumentDB radi lakšeg deploy-ovanja.
Veličine instanci
Uvidjet ćete da je FastComments prilično dobro optimizovan i da za samu aplikaciju nisu potrebne velike mašine kako bi se održali niski P99s.
Svi batch i cron poslovi koriste streaming da ograniče ukupnu upotrebu memorije.
Ispod tabele za aplikacioni server i bazu podataka mogu pomoći pri određivanju veličine.
Instance aplikacionog servera
| Istovremeni korisnici | Ukupan broj CPU-a klastera | Ukupna memorija klastera |
|---|---|---|
| 100 | 1 | 256mb |
| 1K | 2 | 512mb |
| 10K | 8 | 1gb |
| 100K | 32 | 8gb |
| 1M | 64 | 64gb |
Na primjer, jedna jezgra koja servisira oko 100 niti komentara u sekundi obično nikad ne koristi više od 250mb RSS.
Instance servera baze podataka
Dimenzionisanje baze podataka zavisi od veličine working seta, što je količina podataka kojoj pristupate u određenom trenutku, kao i od istovremenih zahtjeva.
FastComments je prilično blagonaklon prema Mongo-u, te za "hot" upite koristi index hints, streaming cursors, i ima ograničenja konkurentnosti u raznim oblastima da spreči preopterećenje downstream sistema.
Ispod je opšti vodič za veličine instanci baze podataka. Napomena: ovo je po instanci, ne ukupni resursi u klasteru.
| Istovremeni korisnici | Spremljeni komentari | CPU-a 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 |
Gornje tabele su konzervativne procjene. Možete utvrditi da se stvarni zahtjevi razlikuju u zavisnosti od vaše specifične konfiguracije (veličine stranica, volumen komentara, itd).
Конфигурација 
FastComments користи варијабле окружења за конфигурацију. Сљедећа листа наводи све подржане варијабле које су релевантне за On-Prem.
| Variable | Default | Info | Required | Examples or Valid Values |
|---|---|---|---|---|
| NODE_ENV | Тип окружења. | Да | production, dev | |
| MONGO_URI | DB URI за повезивање. | Да | ||
| MONGO_ENABLE_SSL | false | Омогућава коришћење SSL-а за повезивање са базом података. | Не | true, false |
| MONGO_ENABLE_SSL_VALIDATE | false | Омогућава валидацију сертификата према CA при повезивању на Mongo. | Не | true, false |
| MONGO_SSL_CA | Mongo SSL CA pem фајл. | Не | /path/to/some-cert.pem | |
| ADMIN_NOTIFICATIONS_EMAIL | Е-пошта на коју би требало стизати важне обавијести везане за систем. | Не | admin-group@bigcorp.com | |
| IP_HASH_SALT | Сол за хеширање IP адреса. | Да | ||
| SESSION_SECRET | Кључ који се користи за потписивање сесија. | Да | ||
| SESSION_STORE_SECRET | Кључ који се користи за потписивање/хаширање сесија у складишту. Мора бити различит од SESSION_SECRET. | Да | ||
| HOSTNAME | Хостнаме гдје је FastComments развијен (админ контролна плоча итд). НЕ ТРЕБА садржавати порт или протокол. | Да | example.com | |
| HOST_ADDR | Доступан URI гдје је FastComments развијен (админ контролна плоча итд). | Да | https://example.com | |
| EMAIL_CONFIG_PATH | Путања на локалном фајл систему гдје се налази конфигурација е-поште (SMTP, мапирања домена/провајдера, итд). | Да | /my/config.json | |
| EMAIL_DEFAULT_FROM_NAME | FastComments Robot | Заглавље „From Name“ у е-порукама. | Не | My Company Name |
| EMAIL_DEFAULT_FOOTER_LOGO | /images/logo-32-2020-01.png | Лого у футеру е-поруке. | Не | https://exmaple.com/footer.png |
| EMAIL_DEFAULT_TRANSPORT | Замјена за "defaultTransport" у EMAIL_CONFIG_PATH. Корисно за коришћење истог конфигурационог фајла у различитим енвима. | Не | myTransportName | |
| ON_PREM_TENANT_ID | ИД вашег налога на fastcomments.com. Користи се за регистрацију вашег лиценцног кључа. | Не | ||
| ON_PREM_LICENSE_KEY | On-prem лиценцни кључ. | Не | ||
| GIPHY_API_KEY | Giphy API кључ. Ако није наведен, требало би креирати правило у конфигурацији које онемогућава бирач гифова. | Не | ||
| GIPHY_DEFAULT_RATING | pg | Користи се за интеграцију са giphy-јем. Такођер се може преоптеретити правилима за прилагођавање виџета. | Не | g, pg, pg-13, r |
| OPENAI_SECRET_KEY | Користи се за OpenAI функције попут опционог GPT-базираног детекције спама. | Не | ||
| CDN_HOST_ADDR | Хостнаме са ког ће се преузимати ресурси. Подразумевано је вриједност HOSTNAME. | Не | example.com | |
| LARGE_FILE_HOST_ADDR | Хостнаме са ког ће се преузимати велики фајлови (нпр. извези). Подразумевано је вриједност CDN_HOST_ADDR. | Не | example.com | |
| LARGE_FILE_LOCATION_TYPE | local_disk | Гдје треба чувати велике фајлове, као што су извези. | Не | local_disk, s3 |
| FROM_EMAIL_HOST | Хостнаме са ког би требало слати е-поруке. | Не | example.com | |
| COOKIE_ID | fastcomments.sid | Име fastcomments колачића. | Не | |
| COOKIE_HOSTNAME | .fastcomments.com | Вриједност поља "hostname" у колачићу. Препоручује се да има префикс тачке. | Не | .example.com |
| S3_ACCESS_KEY | Користи се за корисничке отпреме фајлова, аватаре итд. Подразумјевано је локални фајл систем ако није дефинисано. | Не | ||
| S3_SECRET_KEY | Користи се за корисничке отпреме фајлова, аватаре итд. | Не | ||
| S3_REGION | Користи се за корисничке отпреме фајлова, аватаре итд. | Не | ||
| S3_BUCKET | Користи се за корисничке отпреме фајлова, аватаре итд. | Не | ||
| S3_HOST | Користи се за корисничке отпреме фајлова, аватаре итд. | Не | ||
| CACHE_DIR | Локација за чување опционалне офлајн кеш меморије, за случај кад DB није доступна. Периодично се ажурира са топ 100 тема коментара. | Не | ||
| BACKUP_DIR | Локација за чување података за случај кад DB није доступна. Ако се коментар пошаље док DB није доступан, иде овдје и обрађује се касније. | Не |
Имајте у виду да све варијабле везане за домене користе постфикс _HOST или _ADDR. Разлика је:
_HOST:example.com_ADDR:https://example.com
Путања у EMAIL_CONFIG_PATH треба да садржи путању до JSON фајла са сљедећим примјер форматом:

У горњем примјеру дефинишемо подразумевани SMTP транспорт е-поште који се зове mailgun. Такођер дефинишемо посебан транспорт који користимо специфично за @yahoo.com е-поруке. У појединим сценаријима је пожељно користити специфичног провајдера или IP адресу отправљача за одређени домен ради побољшања испоруке. Ово је опционално.
DocumentDB
Када се повезујете на DocumentDB желећете да наведете MONGO_ENABLE_SSL=true MONGO_SSL_CA=/some/path.pem како бисте били компатибилни са подразумеваним поставкама.
Заустављање рада базе података и режим одржавања 
FastComments подржава аутоматски режим одржавања. Ако база података престане да ради, он може наставити да служи популарне нити коментара.
Поред тога, у режиму одржавања сви коментари се снимају у BACKUP_DIR. Они ће бити обрађени (проверавани на спам и слично) и сачувани када систем поново буде онлајн.
Ово ради тако што сваки сат одреди 100 најпопуларнијих нити коментара и кешира њихов садржај на диску. Опредіјељивање 100 најпопуларнијих нити већ се ради из претходно израчунаваног стања, тако да то није захтјеван периодични посао.
Ово је потпуно опционије и омогућава се само ако су подешени CACHE_DIR и BACKUP_DIR. Ово, наравно, чини чворове апликације стањем (stateful), међутим то је стање које се може изгубити у било којем тренутку без проузроковања некоректног понашања апликације.
Имајте на уму да у режиму одржавања правилна аутентикација нити коментара не може бити обављена, па се периодично бекапују само нити које се сигурно сматрају јавним.
У режиму одржавања многе функције нису доступне.
Закључавања 
Као и сваки дистрибуирани систем, FastComments треба начин за закључавање ресурса и процедура. Ова закључавања се могу пратити путем endpointa /locks-in-progress.
На пример, ево endpointa на нашем US shardu.
Ово може бити корисно да се види зашто је систем заглављен или под оптерећењем. Ако, на пример, SRE жели видети зашто систем има високо оптерећење CPU-а, он може проверити овај endpoint да би добио име cron задатка који не ради исправно.
Код видџета 
Front-end primjeri 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 primer. Takođe možemo koristiti zvanične biblioteke za React, Angular, Vue, Svelte itd.
АПИ 
API-ju se može pristupiti isto kao i uobičajenom SaaS proizvodu, tako što biste se prijavili u On-Prem dashboard da kreirate API ključeve i koristili te ključeve za pristup API-ju.
API endpoints su isti on-prem kao i za SaaS proizvod.
Више домена 
Ваша On-Prem FastComments инсталација може да послужи коментаре за више унутрашњих домена, на пример app.mycorp.org и hr.mycorp.org. Можете их конфигурисати
појединачно, али их хостовати на једном On-Prem окружењу креирањем посебних правила прилагођавања (Customization Rules) да бисте подесили њихово појединачно понашање.
У закључку
Стигли сте до краја документације за On Prem. Јавите нам које додатне коментаре или питања имате испод - можете такође нас контактирати преко Страница за подршку.