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 у кластері Загальна пам'ять кластера
100 1 256mb
1K 2 512mb
10K 8 1gb
100K 32 8gb
1M 64 64gb

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

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

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

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

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

Одночасні користувачі Збережено коментарів 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.

Змінна За замовчуванням Опис Обов'язково Приклади або дійсні значення
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 Ідентифікатор вашого облікового запису на fastcomments.com. Використовується для реєстрації ліцензійного ключа. Ні
ON_PREM_LICENSE_KEY Ліцензійний ключ для локального розгортання. Ні
GIPHY_API_KEY API-ключ Giphy. Якщо не вказано, слід створити правило конфігурації, яке вимикає вибір 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 Назва 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 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 // ... can also pass SSO payload etc.
9 });
10</script>
11

Вищенаведений приклад — дуже простий. Ми також можемо використовувати офіційні бібліотеки для 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. Дайте нам знати, які ще коментарі чи запитання у вас є нижче - ви можете також звернутися до нас через Сторінку підтримки.