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

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

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 фајла са сљедећим примјер форматом:

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

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:

Kod komentara za 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 // ... can also pass SSO payload etc.
9 });
10</script>
11

Gore je vrlo jednostavan primer. Takođe možemo koristiti zvanične biblioteke za React, Angular, Vue, Svelte itd.


АПИ 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. Јавите нам које додатне коментаре или питања имате испод - можете такође нас контактирати преко Страница за подршку.