
Мова 🇺🇦 Українська
Загальні відомості
Початок роботи
Розгортання
Архітектура
Встановлення та інтеграція
Поради щодо безпеки
Розміщення FastComments на власних серверах
FastComments надає кілька рішень для розгортання. Найпоширеніший варіант — коли ми розміщаємо застосунок для вас.
Однак ми розуміємо, що деякі клієнти не можуть зберігати свою інформацію в хмарі й вимагають розміщення всіх своїх даних на власних серверах.
Ця документація охоплює цей випадок використання.
Що включено 
FastComments On Prem дозволяє розгорнути наше рішення для живих коментарів, включно з усіма інструментами модерації та адміністрування, на вашому власному обладнанні.
Це означає, що ви маєте контроль над своїми даними, і систему коментування можна обмежити вашою локальною LAN або корпоративною мережею.
З чого почати 
Щоб почати розгортання FastComments On Prem, зв'яжіться з нами.
Після налаштування ви завжди можете завантажити останній docker image зі сторінки ліцензій.
Екземпляри 
Необхідні компоненти
Для 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 |
Вищенаведені таблиці — консервативні оцінки. Ви можете виявити, що фактичні вимоги відрізняються в залежності від вашої конкретної конфігурації (розміри сторінок, обсяг коментарів тощо).
Конфігурація 
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-файлу з наступним прикладним форматом:

У наведеному прикладі ми визначаємо стандартний 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.
Наприклад, ось кінцева точка на нашому шарді у США.
Це може бути корисно, щоб з'ясувати, чому система зависає або перебуває під навантаженням. Якщо, наприклад, SRE хоче дізнатися, чому система має високе завантаження CPU, вони могли перевірити цю кінцеву точку, щоб отримати назву cron‑задачі, яка поводиться некоректно.
Код віджету 
Фрагменти коду фронтенду та бібліотеки для On-Prem такі ж, як і для SaaS-продукту. Однак ви повинні вказати apiHost та правильний шлях до скрипта:

Вищенаведений приклад — дуже простий. Ми також можемо використовувати офіційні бібліотеки для React, Angular, Vue, Svelte тощо.
API 
До API можна отримати доступ так само, як і до звичайного SaaS-продукту: увійдіть у панель керування On-Prem, щоб створити API-ключі та використовуйте ці ключі для доступу до API. API ендпоїнти на on-prem такі ж, як і для SaaS-продукту.
Кілька доменів 
Ваша On-Prem інсталяція FastComments може обслуговувати коментарі для кількох внутрішніх доменів, наприклад app.mycorp.org та hr.mycorp.org. Ви можете налаштовувати їх окремо, але розміщувати на одній On-Prem інсталяції, створивши окремі Customization Rules для налаштування їхньої індивідуальної поведінки.
На завершення
Ви дісталися кінця документації On Prem. Дайте нам знати, які ще коментарі чи запитання у вас є нижче - ви можете також звернутися до нас через Сторінку підтримки.