
Език 🇧🇬 Български
Обща информация
Първи стъпки
Разгръщане
Архитектура
Инсталация и интеграция
Съвети за сигурност
Хостване на FastComments локално
FastComments предлага няколко решения за разгръщане. Най-често срещаното е, когато ние хостваме приложението за вас.
Въпреки това разбираме, че някои клиенти не могат да съхраняват своята информация в облака и изискват хостване на всичките си данни локално.
Тази документация обхваща този случай на употреба.
Какво е включено 
FastComments On Prem ви позволява да внедрите нашето решение за коментари в реално време, включително всички инструменти за модериране и администриране, на собствен хардуер.
Това означава, че имате контрол над данните си, и системата за коментари може да бъде ограничена до вашия локален LAN или корпоративна мрежа.
Откъде да започнете 
За да започнете разгръщането на FastComments On Prem, свържете се с нас.
След като е настроено, винаги можете да изтеглите най-новия docker image от страницата за лицензи.
Инстанции 
Необходими компоненти
За 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 |
Горните таблици са консервативни оценки. Може да установите, че действителните изисквания се различават в зависимост от вашата конкретна конфигурация (размери на страници, обем на коментари и др.).
Конфигурация 
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 файл със следния примерен формат:

В горния пример дефинираме по подразбиране SMTP имейл транспорт, наречен mailgun. Също така дефинираме специален транспорт, който използваме конкретно за имейли от @yahoo.com. В някои сценарии е желателно да се използва специфичен доставчик или IP за изпращане за даден домейн, за да се подобри доставяемостта. Това е опционално.
DocumentDB
При свързване към DocumentDB е препоръчително да зададете MONGO_ENABLE_SSL=true MONGO_SSL_CA=/some/path.pem, за да сте съвместими с настройките по подразбиране.
Престой на базата данни и режим за поддръжка 
FastComments поддържа автоматичен режим на поддръжка. Ако базата данни прекъсне, той може да продължи да обслужва популярни нишки с коментари.
Освен това, в режим на поддръжка всички коментари се записват в BACKUP_DIR. Те ще бъдат обработени (проверени за спам и т.н.) и запазени, след като системата отново бъде онлайн.
Това се прави чрез определяне на 100-те най-популярни нишки с коментари на всеки час и кеширане на тяхното съдържание на диска. Определянето на 100-те най-популярни нишки вече се извършва въз основа на предварително изчислено състояние, така че това не е тежка периодична задача.
Това е напълно опционално и се активира само ако са зададени CACHE_DIR и BACKUP_DIR. Това, разбира се, прави възлите на приложението със състояние, но това е състояние, което може да бъде изгубено по всяко време, без да причинява неправилно функциониране на приложението.
Обърнете внимание, че в режим на поддръжка правилната автентикация на нишките с коментари не може да бъде извършена, така че периодично се архивират само нишки, които със сигурност се считат за публични.
В режим на поддръжка много функции не са налични.
Заключвания 
Като всяка разпределена система, FastComments се нуждае от начин за заключване на ресурси и процедури. Тези заключвания могат да бъдат наблюдавани чрез крайна точка /locks-in-progress.
Например, ето крайната точка на нашия US shard.
Това може да бъде полезно, за да се види защо системата е блокирана или под натоварване. Ако например SRE иска да разбере защо системата изпитва високо натоварване на CPU, те могат да проверят тази крайна точка, за да получат името на cron, който се държи неправилно.
Код на уиджета 
Фрагментите от фронтенд кода и библиотеките за On-Prem са същите като при SaaS продукта. Въпреки това, трябва да посочите apiHost и правилния път до скрипта:

Горният пример е много прост. Можем също да използваме официалните библиотеки за React, Angular, Vue, Svelte и т.н.
API 
До API-то може да се осъществи достъп по същия начин както при обикновения SaaS продукт — влизате в On-Prem dashboard, за да създадете API ключове и да използвате тези ключове за достъп до API-то.
API-то
endpoints са същите on-prem, както и за SaaS продукта.
Множество домейни 
Вашата On-Prem FastComments инсталация може да обслужва коментари за множество вътрешни домейни, например app.mycorp.org и hr.mycorp.org. Можете да конфигурирате тези
поотделно, но да ги хоствате на една On-Prem инсталация, като създадете отделни Customization Rules за конфигуриране на техните индивидуални поведения.
Сигурност 
По подразбиране FastComments приема, че нишките с коментари са публични. За да добавите слой на сигурност, препоръчително е да създадете правило за персонализиране с отметнатата опция
Requires SSO. Това ще накара всички крайни точки, свързани с коментари, да изискват удостоверяване чрез SSO.
В заключение
Достигнали сте края на документацията за On Prem. Уведомете ни за допълнителни коментари или въпроси, които имате по-долу - можете също да се свържете с нас чрез Страница за поддръжка.