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 на клъстера Обща памет на клъстера
100 1 256mb
1K 2 512mb
10K 8 1gb
100K 32 8gb
1M 64 64gb

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

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

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

FastComments е сравнително щадящ към Mongo, тъй като за горещите заявки използва index hints, streaming cursors и има concurrency limits в различни области, за да предотврати претоварване на 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 използва променливи на средата за конфигурация. Следният списък описва всички поддържани променливи, които са релевантни за On-Prem.

Variable Default Info Required Examples or Valid Values
NODE_ENV Тип на средата. Да production, dev
MONGO_URI 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 ID на вашия акаунт в fastcomments.com. Използва се за регистриране на лицензионния ключ. Не
ON_PREM_LICENSE_KEY Лицензен ключ за on-prem инсталация. Не
GIPHY_API_KEY Giphy API ключ. Ако не е зададено, трябва да създадете правило за конфигурация, което да деактивира избора на GIF. Не
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 Местоположение за съхранение на опционален офлайн кеш, за случаи когато БД не е налична. Периодично се обновява с топ 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


Фрагментите от фронтенд кода и библиотеките за 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 полезен товар и т.н.
9 });
10</script>
11

Горният пример е много прост. Можем също да използваме официалните библиотеки за React, Angular, Vue, Svelte и т.н.


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. Уведомете ни за допълнителни коментари или въпроси, които имате по-долу - можете също да се свържете с нас чрез Страница за поддръжка.