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 е доста оптимизиран и не изисква големи машини за самото приложение, за да поддържа ниски P99s.

Всички пакетни и cron задачи използват стрийминг, за да ограничат общото използване на памет.

По-долу таблиците за сървъра на приложението и базата данни могат да помогнат при оразмеряването.

Инстанции на сървъра на приложението

Едновременни потребителиОбщо CPU на клъстераОбща памет на клъстера
1001256mb
1K2512mb
10K81gb
100K328gb
1M6464gb

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

Инстанции на сървъра на базата данни

Оразмеряването на базата данни зависи от размера на работния набор, който е количеството данни, до които имате достъп в даден момент, както и от едновременните заявки.

FastComments е сравнително щадящ към Mongo, тъй като за горещите заявки използва index hints, streaming cursors и има concurrency limits в различни области, за да предотврати претоварване на downstream системите.

По-долу е общо ръководство за размерите на инстанциите на базата данни. Обърнете внимание, че това е за всеки екземпляр, а не общите ресурси в клъстера.

Едновременни потребителиСъхранени коментариCPU на инстанцияПамет на инстанция
1001k1256mb
1K5k2512mb
10K100k82gb
100K500k168gb
1M5M3232gb

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

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

FastComments използва променливи на средата за конфигурация. Следният списък описва всички поддържани променливи, които са релевантни за On-Prem.

VariableDefaultInfoRequiredExamples or Valid Values
NODE_ENVТип на средата.Даproduction, dev
MONGO_URIURI за връзка към базата данни.Да
MONGO_ENABLE_SSLfalseПозволява използването на SSL за връзка с базата данни.Неtrue, false
MONGO_ENABLE_SSL_VALIDATEfalseПозволява валидиране на сертификата спрямо CA при свързване към Mongo.Неtrue, false
MONGO_SSL_CAMongo 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_NAMEFastComments 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_IDID на вашия акаунт в fastcomments.com. Използва се за регистриране на лицензионния ключ.Не
ON_PREM_LICENSE_KEYЛицензен ключ за on-prem инсталация.Не
GIPHY_API_KEYGiphy API ключ. Ако не е зададено, трябва да създадете правило за конфигурация, което да деактивира избора на GIF.Не
GIPHY_DEFAULT_RATINGpgИзползва се за интеграцията с 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_TYPElocal_diskКъде трябва да се съхраняват големи файлове, като експорти.Неlocal_disk, s3
FROM_EMAIL_HOSTИмето на хоста, от който трябва да се изпращат имейлите.Неexample.com
COOKIE_IDfastcomments.sidИмето на бисквитката на fastcomments.Не
COOKIE_HOSTNAME.fastcomments.comСтойността на полето "hostname" в бисквитката. Препоръчва се да се сложи префикс точка.Не.example.com
S3_ACCESS_KEYИзползва се за качвания на файлове от потребители, аватари и т.н. По подразбиране е локална файлова система, ако не е дефинирано.Не
S3_SECRET_KEYИзползва се за качвания на файлове от потребители, аватари и т.н.Не
S3_REGIONИзползва се за качвания на файлове от потребители, аватари и т.н.Не
S3_BUCKETИзползва се за качвания на файлове от потребители, аватари и т.н.Не
S3_HOSTИзползва се за качвания на файлове от потребители, аватари и т.н.Не
CACHE_DIRМестоположение за съхранение на опционален офлайн кеш, за случаи когато БД не е налична. Периодично се обновява с топ 100 нишки с коментари.Не
BACKUP_DIRМестоположение за съхранение на данни за случаи когато БД не е налична. Ако коментар бъде изпратен, когато БД не е достъпна, отива тук и се обработва по-късно.Не

Обърнете внимание, че всички променливи, свързани с домейни, използват постфиксите _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. Това, разбира се, прави възлите на приложението със състояние, но това е състояние, което може да бъде изгубено по всяко време, без да причинява неправилно функциониране на приложението.

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

В режим на поддръжка много функции не са налични.

Код на уиджета Internal Link

The front end code snippets and libraries for On-Prem are the same as the SaaS product. However, you must specify apiHost and the correct script path:

Код за коментари за 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

The above is a very simple example. We could also use the 1st-party React, Angular, Vue, Svelte, etc, libraries.

API Internal Link

До API-то може да се осъществи достъп по същия начин както при обикновения SaaS продукт — влизате в On-Prem dashboard, за да създадете API ключове и да използвате тези ключове за достъп до API-то.
API-то endpoints са същите on-prem, както и за SaaS продукта.

Множество домейни Internal Link

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

Сигурност Internal Link

По подразбиране FastComments приема, че нишките с коментари са публични. За да добавите слой на сигурност, препоръчително е да създадете правило за персонализиране с отметнатата опция Requires SSO. Това ще накара всички крайни точки, свързани с коментари, да изискват удостоверяване чрез SSO.


В заключение

Достигнали сте края на документацията за On Prem. Уведомете ни за допълнителни коментари или въпроси, които имате по-долу - можете също да се свържете с нас чрез Страница за поддръжка.