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 како би ограничили укупну употребу меморије.

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

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

Истовремени корисници Укупни Cluster CPUs Укупна Cluster меморија
100 1 256mb
1K 2 512mb
10K 8 1gb
100K 32 8gb
1M 64 64gb

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

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

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

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

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

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

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


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

FastComments koristi environment varijable za konfiguraciju. Slijedeći spisak navodi sve podržane varijable koje su relevantne za On-Prem.

Variable Podrazumijevano Opis Obavezno Primjeri ili važeće vrijednosti
NODE_ENV Tip okruženja. Da production, dev
MONGO_URI URI za povezivanje sa bazom podataka. Da
MONGO_ENABLE_SSL false Omogućava korišćenje SSL-a za povezivanje sa bazom podataka. Ne true, false
MONGO_ENABLE_SSL_VALIDATE false Omogućava validaciju sertifikata prema CA prilikom povezivanja na Mongo. Ne true, false
MONGO_SSL_CA Mongo SSL CA pem fajl. Ne /path/to/some-cert.pem
ADMIN_NOTIFICATIONS_EMAIL Email na koji treba da stižu važne sistemske notifikacije. Ne admin-group@bigcorp.com
IP_HASH_SALT Sol za heširanje IP adresa. Da
SESSION_SECRET Ključ koji se koristi za potpisivanje sesija. Da
SESSION_STORE_SECRET Ključ koji se koristi za potpisivanje/heširanje sesija u skladištu. Mora biti drugačiji od SESSION_SECRET. Da
HOSTNAME Hostname na kojem je FastComments postavljen (admin dashboard itd). Ne smije uključivati port ili protokol. Da example.com
HOST_ADDR Pristupačni URI na kojem je FastComments dostupan (admin dashboard itd). Da https://example.com
EMAIL_CONFIG_PATH Putanja na lokalnom fajl sistemu gdje se nalazi konfiguracija e-pošte (SMTP, mapiranja domena/ provajdera, itd). Da /my/config.json
EMAIL_DEFAULT_FROM_NAME FastComments Robot Zaglavlje "From Name" u emailu. Ne My Company Name
EMAIL_DEFAULT_FOOTER_LOGO /images/logo-32-2020-01.png Logo u podnožju emaila. Ne https://exmaple.com/footer.png
EMAIL_DEFAULT_TRANSPORT Override za "defaultTransport" u EMAIL_CONFIG_PATH. Korisno za deploy istog konfiguracionog fajla u različita okruženja. Ne myTransportName
ON_PREM_TENANT_ID ID vašeg naloga na fastcomments.com. Koristi se za registraciju vašeg licence ključa. Ne
ON_PREM_LICENSE_KEY On-Prem licencni ključ. Ne
GIPHY_API_KEY Giphy API ključ. Ako nije naveden, trebate kreirati konfiguraciono pravilo koje onemogućava izbor gifova. Ne
GIPHY_DEFAULT_RATING pg Koristi se za Giphy integraciju. Može se takođe prebrisati pravilima za prilagođavanje widgeta. Ne g, pg, pg-13, r
OPENAI_SECRET_KEY Koristi se za OpenAI funkcionalnosti poput opcionog GPT-baziranog detektovanja spama. Ne
CDN_HOST_ADDR Hostname sa kojeg će se preuzimati asseti. Po defaultu koristi vrijednost HOSTNAME. Ne example.com
LARGE_FILE_HOST_ADDR Hostname sa kojeg se preuzimaju veliki fajlovi (npr. eksporti). Po defaultu koristi vrijednost CDN_HOST_ADDR. Ne example.com
LARGE_FILE_LOCATION_TYPE local_disk Gdje treba čuvati velike fajlove, poput eksportovanih podataka. Ne local_disk, s3
FROM_EMAIL_HOST Hostname sa kojeg bi emailovi trebali biti poslati. Ne example.com
COOKIE_ID fastcomments.sid Ime fastcomments kolačića. Ne
COOKIE_HOSTNAME .fastcomments.com Vrijednost polja "hostname" u kolačiću. Preporučeno je prefiksirati tačkom. Ne .example.com
S3_ACCESS_KEY Koristi se za korisničke uploadove fajlova, avatara itd. Po defaultu koristi lokalni FS ako nije definisano. Ne
S3_SECRET_KEY Koristi se za korisničke uploadove fajlova, avatara itd. Ne
S3_REGION Koristi se za korisničke uploadove fajlova, avatara itd. Ne
S3_BUCKET Koristi se za korisničke uploadove fajlova, avatara itd. Ne
S3_HOST Koristi se za korisničke uploadove fajlova, avatara itd. Ne
CACHE_DIR Lokacija za pohranu opcionalnog offline keša, za slučaj da DB nije dostupan. Periodično se osvježava sa top 100 nitima komentara. Ne
BACKUP_DIR Lokacija za pohranu podataka za slučaj da DB nije dostupan. Ako je komentar poslan kada DB nije dostupan, ide ovdje i obrađuje se kasnije. Ne

Imajte na umu da sve varijable vezane za domenu koriste sufiks _HOST ili _ADDR. Razlika je:

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

EMAIL_CONFIG_PATH treba da sadrži putanju do JSON fajla sa sljedećim primjerom formata:

Konfiguracija e-pošte
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

U gore navedenom primjeru definišemo podrazumijevani SMTP email transport nazvan mailgun. Takođe definišemo specijalan transport koji koristimo posebno za @yahoo.com emailove. U nekim scenarijima poželjno je koristiti određenog provajdera ili IP adresu za slanje za određenu domenu kako bi se prilagodila isporuka. Ovo je opciono.

DocumentDB

Prilikom povezivanja na DocumentDB preporučuje se postaviti MONGO_ENABLE_SSL=true MONGO_SSL_CA=/some/path.pem da biste bili kompatibilni sa podrazumijevanim postavkama.


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


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

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

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

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

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

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


Код виџета Internal Link

Primeri koda front-enda i biblioteke za On-Prem su isti kao kod SaaS proizvoda. 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 // ... možete takođe proslijediti SSO payload itd.
9 });
10</script>
11

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

АПИ Internal Link

До API-ја се може приступити на исти начин као и код редовног SaaS производа: пријављивањем у On-Prem контролни панел да бисте креирали API keys и користили те API keys за приступ API-ју. API endpoints су исти на On-Prem као и за SaaS производ.

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

Vaša On-Prem FastComments instalacija može isporučivati komentare za više internih domena, na primjer app.mycorp.org i hr.mycorp.org. Možete ih konfigurisati odvojeno, али ih hostovati na jednoj On-Prem instalaciji kreiranjem zasebnih Customization Rules kako biste podesili njihovo pojedinačno ponašanje.

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

Подразумевано, FastComments претпоставља да су нитови коментара јавни.

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

У закључку

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