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-ови у кластеру Укупна меморија кластера
100 1 256mb
1K 2 512mb
10K 8 1gb
100K 32 8gb
1M 64 64gb

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

Database Server Instances

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

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

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

Конкурентни корисници Сачувани коментари CPU-ови по инстанци Меморија по инстанци
100 1k 1 256mb
1K 5k 2 512mb
10K 100k 8 2gb
100K 500k 16 8gb
1M 5M 32 32gb

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

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

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

Променљива Подразумевано Информације Обавезно Примери или валидне вредности
NODE_ENV Тип окружења. Yes production, dev
MONGO_URI DB Connection URI. Yes
MONGO_ENABLE_SSL false Омогућава коришћење SSL-а за повезивање са базом података. No true, false
MONGO_ENABLE_SSL_VALIDATE false Омогућава валидацију сертификата у односу на CA када се повезује на Mongo. No true, false
MONGO_SSL_CA Mongo SSL CA pem фајл. No /path/to/some-cert.pem
ADMIN_NOTIFICATIONS_EMAIL Email на који би требало да стижу важне системске обавештења. No admin-group@bigcorp.com
IP_HASH_SALT Салт за хеширање IP адреса. Yes
SESSION_SECRET Кључ који се користи за потписивање сесија. Yes
SESSION_STORE_SECRET Кључ који се користи за потписивање/хеширање сесија у складишту. Мора се разликовати од SESSION_SECRET. Yes
HOSTNAME Име хоста на којем је FastComments размењен (админски панел итд). НЕ сме да садржи порт или протокол. Yes example.com
HOST_ADDR Приступачан URI где је FastComments размењен (админски панел итд). Yes https://example.com
EMAIL_CONFIG_PATH Путања на локалном фајл систему где се налази email конфигурација (SMTP, мапирање домена/провајдера итд). Yes /my/config.json
EMAIL_DEFAULT_FROM_NAME FastComments Robot Заглавље "From Name" у имејлу. No My Company Name
EMAIL_DEFAULT_FOOTER_LOGO /images/logo-32-2020-01.png Лого у подножју имејла. No https://exmaple.com/footer.png
EMAIL_DEFAULT_TRANSPORT Замена за "defaultTransport" у EMAIL_CONFIG_PATH. Корисно за распоређивање исте конфигурационе датотеке у различитим окружењима. No myTransportName
ON_PREM_TENANT_ID ИД вашег налога на fastcomments.com. Користи се за регистрацију вашег лиценцног кључа. No
ON_PREM_LICENSE_KEY Лиценцни кључ за on-prem инсталацију. No
GIPHY_API_KEY Giphy API кључ. Ако није наведен, требало би да направите правило конфигурације које онемогућава бирач GIF-ова. No
GIPHY_DEFAULT_RATING pg Користи се за Giphy интеграцију. Такође може бити промењен правилима прилагођавања виџета. No g, pg, pg-13, r
OPENAI_SECRET_KEY Користи се за OpenAI могућности као што су опционална GPT-базирана детекција спама. No
CDN_HOST_ADDR Име хоста са којег ће се преузимати ресурси. По подразумеваној вредности користи се вредност HOSTNAME. No example.com
LARGE_FILE_HOST_ADDR Име хоста са којег се преузимају велики фајлови (као што су експорти). По подразумеваној вредности користи се вредност CDN_HOST_ADDR. No example.com
LARGE_FILE_LOCATION_TYPE local_disk Где треба да се чувају велики фајлови, као што су експорти. No local_disk, s3
FROM_EMAIL_HOST Име хоста са којег треба да се шаљу имејлови. No example.com
COOKIE_ID fastcomments.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 src="https://my.host.com/js/embed-v2.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5 FastCommentsUI(document.getElementById('fastcomments-widget'), {
6 tenantId: "demo",
7 apiHost: "https://my.host.com"
8 // ... такође можете проследити SSO payload итд.
9 });
10</script>
11

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