FastComments.com

Хостовање FastComments на локацији

FastComments пружа неколико решења за распоређивање. Најчешће је да ми хостујемо апликацију за вас.

Међутим, разумијемо да неки купци не могу чувати своје податке у облаку и захтијевају хостовање свих својих података локално.


Ова документација покрива тај случај употребе.

Шта је укључено Internal Link

FastComments On Prem омогућава вам да распоредите наше решење за уживо коментарисање, укључујући све алате за модерацију и администрацију, на вашем сопственом хардверу.

Ово значи да имате контролу над својим подацима, и систем за коментарисање може бити ограничен на вашу локалну LAN или корпоративну мрежу.

Инстанце Internal Link

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 korisniciUkupan broj CPU-a klasteraUkupna memorija klastera
1001256mb
1K2512mb
10K81gb
100K328gb
1M6464gb

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 korisniciSpremljeni komentariCPU-a po instanciMemorija po instanci
1001k1256mb
1K5k2512mb
10K100k82gb
100K500k168gb
1M5M3232gb

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).

Конфигурација Internal Link

FastComments користи варијабле окружења за конфигурацију. Сљедећа листа наводи све подржане варијабле које су релевантне за On-Prem.

VariableDefaultInfoRequiredExamples or Valid Values
NODE_ENVТип окружења.Даproduction, dev
MONGO_URIDB URI за повезивање.Да
MONGO_ENABLE_SSLfalseОмогућава коришћење SSL-а за повезивање са базом података.Неtrue, false
MONGO_ENABLE_SSL_VALIDATEfalseОмогућава валидацију сертификата према CA при повезивању на Mongo.Неtrue, false
MONGO_SSL_CAMongo 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_NAMEFastComments 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_KEYOn-prem лиценцни кључ.Не
GIPHY_API_KEYGiphy API кључ. Ако није наведен, требало би креирати правило у конфигурацији које онемогућава бирач гифова.Не
GIPHY_DEFAULT_RATINGpgКористи се за интеграцију са 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_TYPElocal_diskГдје треба чувати велике фајлове, као што су извези.Неlocal_disk, s3
FROM_EMAIL_HOSTХостнаме са ког би требало слати е-поруке.Неexample.com
COOKIE_IDfastcomments.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 фајла са сљедећим примјер форматом:

Конфигурација е-поште
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

У горњем примјеру дефинишемо подразумевани SMTP транспорт е-поште који се зове mailgun. Такођер дефинишемо посебан транспорт који користимо специфично за @yahoo.com е-поруке. У појединим сценаријима је пожељно користити специфичног провајдера или IP адресу отправљача за одређени домен ради побољшања испоруке. Ово је опционално.

DocumentDB

Када се повезујете на DocumentDB желећете да наведете MONGO_ENABLE_SSL=true MONGO_SSL_CA=/some/path.pem како бисте били компатибилни са подразумеваним поставкама.


Заустављање рада базе података и режим одржавања Internal Link

FastComments подржава аутоматски режим одржавања. Ако база података престане да ради, он може наставити да служи популарне нити коментара.

Поред тога, у режиму одржавања сви коментари се снимају у BACKUP_DIR. Они ће бити обрађени (проверавани на спам и слично) и сачувани када систем поново буде онлајн.

Ово ради тако што сваки сат одреди 100 најпопуларнијих нити коментара и кешира њихов садржај на диску. Опредіјељивање 100 најпопуларнијих нити већ се ради из претходно израчунаваног стања, тако да то није захтјеван периодични посао.

Ово је потпуно опционије и омогућава се само ако су подешени CACHE_DIR и BACKUP_DIR. Ово, наравно, чини чворове апликације стањем (stateful), међутим то је стање које се може изгубити у било којем тренутку без проузроковања некоректног понашања апликације.

Имајте на уму да у режиму одржавања правилна аутентикација нити коментара не може бити обављена, па се периодично бекапују само нити које се сигурно сматрају јавним.

У режиму одржавања многе функције нису доступне.

Код видџета Internal Link

Фронтенд фрагменти кода и библиотеке за On-Prem су исти као и за SaaS производ. Међутим, морате назначити apiHost и исправну путању до скрипте:

Код коментара за On-Prem
Copy Copy
1
2<script async src="https://my.host.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5 window.fcConfigs = [{
6 target: '#fastcomments-widget',
7 tenantId: "demo",
8 apiHost: "https://my.host.com"
9 // ... можете такође проследити SSO податке итд.
10 }];
11</script>
12

Горе је дат веома једноставан пример. Такође можемо користити званичне (1st-party) библиотеке за React, Angular, Vue, Svelte итд.

АПИ Internal Link

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.

Више домена Internal Link

Ваша On-Prem FastComments инсталација може да послужи коментаре за више унутрашњих домена, на пример app.mycorp.org и hr.mycorp.org. Можете их конфигурисати појединачно, али их хостовати на једном On-Prem окружењу креирањем посебних правила прилагођавања (Customization Rules) да бисте подесили њихово појединачно понашање.

Безбједност Internal Link

По подразумеву, FastComments претпоставља да су нитови коментара јавни. Да бисте додали ниво сигурности, препоручује се креирање правила прилагођавања са Requires SSO опцијом означеном. Ово ће узроковати да сви ендпоинти повезани с коментарима захтијевају SSO аутентификацију.

У закључку

Стигли сте до краја документације за On Prem. Јавите нам које додатне коментаре или питања имате испод - можете такође нас контактирати преко Страница за подршку.