FastComments.com

Локална инсталација

Хостовање FastComments на локалним серверима

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

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

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

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

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

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

Инстанце Internal Link

Потребне компоненте

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

Апликациони сервер се испоручује као Docker слика и може се применити са било којим решењем за управљање контејнерима.

База података, MongoDB, може бити самостално покренута или хостована од стране другог провајдера као што су AWS DocumentDB или MongoDB Atlas.

FastComments се тренутно тестира са MongoDB 7, међутим тежимо ка DocumentDB компатибилности како бисмо олакшали примену.

Величине инстанци

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

Сви batch и cron послови користе streaming како би ограничили укупну потрошњу меморије.

Табеле испод за апликациони сервер и базу података могу помоћи при одређивању величине.

Инстанце апликационог сервера

Конкурентни кориснициУкупно CPU-ја у кластеруУкупна меморија кластера
1001256mb
1K2512mb
10K81gb
100K328gb
1M6464gb

На пример, једно језгро које опслужује око 100 коментарских ништи у секунди обично никада не користи више од 250mb RSS.

Инстанце сервера базе података

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

FastComments је прилично благ према Mongo-у, у томе што за hot упите користи index hints, streaming курсоре, и има лимите конкурентности у различитим областима како би спречио преоптерећење низводних система.

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

Конкурентни кориснициСачуваних коментараCPU-ја по инстанциМеморија по инстанци
1001k1256mb
1K5k2512mb
10K100k82gb
100K500k168gb
1M5M3232gb

Горње табеле су конзервативне процене. Могуће је да се стварни захтеви разликују у зависности од ваше специфичне конфигурације (величина страница, обим коментара, итд).

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

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

ПроменљиваПодразумеваноИнформацијеОбавезноПримери или валидне вредности
NODE_ENVТип окружења.Yesproduction, dev
MONGO_URIDB Connection URI.Yes
MONGO_ENABLE_SSLfalseОмогућава коришћење SSL-а за повезивање са базом података.Notrue, false
MONGO_ENABLE_SSL_VALIDATEfalseОмогућава валидацију сертификата у односу на CA када се повезује на Mongo.Notrue, false
MONGO_SSL_CAMongo SSL CA pem фајл.No/path/to/some-cert.pem
ADMIN_NOTIFICATIONS_EMAILEmail на који би требало да стижу важне системске обавештења.Noadmin-group@bigcorp.com
IP_HASH_SALTСалт за хеширање IP адреса.Yes
SESSION_SECRETКључ који се користи за потписивање сесија.Yes
SESSION_STORE_SECRETКључ који се користи за потписивање/хеширање сесија у складишту. Мора се разликовати од SESSION_SECRET.Yes
HOSTNAMEИме хоста на којем је FastComments размењен (админски панел итд). НЕ сме да садржи порт или протокол.Yesexample.com
HOST_ADDRПриступачан URI где је FastComments размењен (админски панел итд).Yeshttps://example.com
EMAIL_CONFIG_PATHПутања на локалном фајл систему где се налази email конфигурација (SMTP, мапирање домена/провајдера итд).Yes/my/config.json
EMAIL_DEFAULT_FROM_NAMEFastComments RobotЗаглавље "From Name" у имејлу.NoMy Company Name
EMAIL_DEFAULT_FOOTER_LOGO/images/logo-32-2020-01.pngЛого у подножју имејла.Nohttps://exmaple.com/footer.png
EMAIL_DEFAULT_TRANSPORTЗамена за "defaultTransport" у EMAIL_CONFIG_PATH. Корисно за распоређивање исте конфигурационе датотеке у различитим окружењима.NomyTransportName
ON_PREM_TENANT_IDИД вашег налога на fastcomments.com. Користи се за регистрацију вашег лиценцног кључа.No
ON_PREM_LICENSE_KEYЛиценцни кључ за on-prem инсталацију.No
GIPHY_API_KEYGiphy API кључ. Ако није наведен, требало би да направите правило конфигурације које онемогућава бирач GIF-ова.No
GIPHY_DEFAULT_RATINGpgКористи се за Giphy интеграцију. Такође може бити промењен правилима прилагођавања виџета.Nog, pg, pg-13, r
OPENAI_SECRET_KEYКористи се за OpenAI могућности као што су опционална GPT-базирана детекција спама.No
CDN_HOST_ADDRИме хоста са којег ће се преузимати ресурси. По подразумеваној вредности користи се вредност HOSTNAME.Noexample.com
LARGE_FILE_HOST_ADDRИме хоста са којег се преузимају велики фајлови (као што су експорти). По подразумеваној вредности користи се вредност CDN_HOST_ADDR.Noexample.com
LARGE_FILE_LOCATION_TYPElocal_diskГде треба да се чувају велики фајлови, као што су експорти.Nolocal_disk, s3
FROM_EMAIL_HOSTИме хоста са којег треба да се шаљу имејлови.Noexample.com
COOKIE_IDfastcomments.sidИме fastcomments колачића.No
COOKIE_HOSTNAME.fastcomments.comВредност поља "hostname" у колачићу. Препоручује се да има префикс са тачком.No.example.com
S3_ACCESS_KEYКористи се за корисничка отпремања фајлова, аватаре итд. По подразумеваној вредности користи локални фајл систем ако није дефинисано.No
S3_SECRET_KEYКористи се за корисничка отпремања фајлова, аватаре итд.No
S3_REGIONКористи се за корисничка отпремања фајлова, аватаре итд.No
S3_BUCKETКористи се за корисничка отпремања фајлова, аватаре итд.No
S3_HOSTКористи се за корисничка отпремања фајлова, аватаре итд.No
CACHE_DIRЛокација за чување опционалног офлајн кеша, за случај када БД није доступна. Периодично се освежава са 100 најактивнијих тема коментара.No
BACKUP_DIRЛокација за чување података за случај када БД није доступна. Ако се коментар пошаље када је БД недоступна, он се овде чува и касније обрађује.No

Имајте у виду да све променљиве везане за домене користе суфиксе _HOST или _ADDR. Разлика је:

  • _HOST: example.com
  • _ADDR: https://example.com

Путanja у 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 најпопуларнијих нити већ се врши из претходно израчунатог стања, па то није тежак периодични задатак.

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

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

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

Код виџета 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 payload итд.
10 }];
11</script>
12

Горњи пример је веома једноставан. Такође можемо користити званичне React, Angular, Vue, Svelte и друге библиотеке.

АПИ Internal Link

Приступ API-ју је могућ на исти начин као и код редовног SaaS производа: пријавите се у On-Prem контролни панел да бисте креирали API кључеве и користили те кључеве за приступ API-ју. API endpoints су исти on-prem као и за SaaS производ.

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

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

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

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

У закључку

Дошли сте до краја документације за On Prem. Обавестите нас о даљим коментарима или питањима која имате испод - можете такође нам се обратити путем странице за подршку.