FastComments.com

Розміщення FastComments на власних серверах

FastComments надає кілька рішень для розгортання. Найпоширеніший варіант — коли ми розміщаємо застосунок для вас.

Однак ми розуміємо, що деякі клієнти не можуть зберігати свою інформацію в хмарі й вимагають розміщення всіх своїх даних на власних серверах.

Ця документація охоплює цей випадок використання.


Що включено Internal Link

FastComments On Prem дозволяє розгорнути наше рішення для живих коментарів, включно з усіма інструментами модерації та адміністрування, на вашому власному обладнанні.

Це означає, що ви маєте контроль над своїми даними, і систему коментування можна обмежити вашою локальною LAN або корпоративною мережею.

Екземпляри Internal Link

Необхідні компоненти

Для On-Prem, FastComments складається лише з серверу застосунку та бази даних. Ми спростили розгортання так, щоб застосунок міг обслуговувати весь трафік без додавання інших компонентів.

Сервер застосунку постачається у Docker image і може бути розгорнутий з будь-яким рішенням для керування контейнерами.

Базу даних, MongoDB, можна запускати самостійно або використовувати хостинг від іншого провайдера, наприклад AWS DocumentDB або MongoDB Atlas.

FastComments наразі тестується з MongoDB 7, проте ми прагнемо забезпечити сумісність з DocumentDB для полегшення розгортання.

Розміри інстансів

Ви побачите, що FastComments досить добре оптимізований і не вимагає потужних машин для самого застосунку, щоб підтримувати низькі P99s.

Усі пакетні та cron-завдання використовують потокову обробку, щоб обмежити загальне використання пам'яті.

Нижченаведені таблиці для серверу застосунку та бази даних допоможуть з визначенням розмірів.

Інстанси серверу застосунку

Одночасні користувачіЗагальна кількість CPU у кластеріЗагальна пам'ять кластера
1001256mb
1K2512mb
10K81gb
100K328gb
1M6464gb

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

Інстанси серверу бази даних

Визначення розміру бази даних залежить від розміру робочого набору (working set) — кількості даних, до яких ви звертаєтесь у певний момент часу, а також від одночасних запитів.

FastComments досить «дружній» до Mongo: для гарячих запитів він використовує index hints, streaming cursors і має concurrency limits у різних ділянках, щоб запобігти перевантаженню підсистем.

Нижченаведене — загальна орієнтовна таблиця розмірів інстансів бази даних. Зверніть увагу, що це на один інстанс, а не загальні ресурси кластера.

Одночасні користувачіЗбережено коментарівCPU на інстансПам'ять на інстанс
1001k1256mb
1K5k2512mb
10K100k82gb
100K500k168gb
1M5M3232gb

Вищенаведені таблиці — консервативні оцінки. Ви можете виявити, що фактичні вимоги відрізняються в залежності від вашої конкретної конфігурації (розміри сторінок, обсяг коментарів тощо).


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

FastComments використовує змінні оточення для конфігурації. Нижченаведений перелік описує всі підтримувані змінні, що стосуються On-Prem.

ЗміннаЗа замовчуваннямОписОбов'язковоПриклади або дійсні значення
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_IDІдентифікатор вашого облікового запису на fastcomments.com. Використовується для реєстрації ліцензійного ключа.Ні
ON_PREM_LICENSE_KEYЛіцензійний ключ для локального розгортання.Ні
GIPHY_API_KEYAPI-ключ Giphy. Якщо не вказано, слід створити правило конфігурації, яке вимикає вибір 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Назва cookie для fastcomments.Ні
COOKIE_HOSTNAME.fastcomments.comЗначення поля cookie "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 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

Наведене вище — дуже простий приклад. Ми також можемо використовувати офіційні бібліотеки для React, Angular, Vue, Svelte тощо.

API Internal Link

До API можна отримати доступ так само, як і до звичайного SaaS-продукту: увійдіть у панель керування On-Prem, щоб створити API-ключі та використовуйте ці ключі для доступу до API. API ендпоїнти на 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. Дайте нам знати, які ще коментарі чи запитання у вас є нижче - ви можете також звернутися до нас через Сторінку підтримки.