FastComments.com


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

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

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

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


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

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

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

Инстанце Internal Link

Required Components

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

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

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

FastComments је тренутно тестирано са MongoDB 7, међутим циљ нам је да буде компатибилно са DocumentDB како бисмо олакшали размештање.

Instance Sizes

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

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

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

Application Server Instances

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

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

Database Server Instances

Размер базе података зависи од величине радног сета (working set), што је количина података којој приступате у одређеном тренутку, као и од конкуретних захтева.

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

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

Конкурентни кориснициСачувани коментари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. Обавестите нас о даљим коментарима или питањима која имате испод - можете такође нам се обратити путем странице за подршку.