FastComments.com

Hostowanie FastComments lokalnie (On-Prem)

FastComments oferuje kilka rozwiązań do wdrożenia. Najczęstszym jest przypadek, w którym hostujemy aplikację dla Ciebie.

Jednak rozumiemy, że niektórzy klienci nie mogą przechowywać swoich informacji w chmurze i wymagają hostowania wszystkich swoich danych na miejscu.

Niniejsza dokumentacja obejmuje ten przypadek użycia.

Co zawiera Internal Link

FastComments On Prem pozwala wdrożyć nasze rozwiązanie do komentowania na żywo, w tym wszystkie narzędzia do moderacji i administracji, na własnym sprzęcie.

To oznacza, że masz kontrolę nad swoimi danymi, a system komentowania może być ograniczony do twojej lokalnej sieci LAN lub sieci korporacyjnej.

Instancje Internal Link

Wymagane komponenty

Dla On-Prem FastComments składa się tylko z serwera aplikacji i bazy danych. Uprościliśmy wdrożenie tak, aby aplikacja mogła obsługiwać cały ruch bezpośrednio, bez dodawania innych komponentów.

Serwer aplikacji jest dostarczany w obrazie Dockera i może być wdrożony przy użyciu dowolnego rozwiązania do zarządzania kontenerami.

Baza danych, MongoDB, może być uruchomiona samodzielnie lub hostowana przez innego dostawcę, np. AWS DocumentDB lub MongoDB Atlas.

FastComments jest obecnie testowany z MongoDB 7, jednak dążymy do zgodności z DocumentDB, aby ułatwić wdrożenie.

Rozmiary instancji

Zauważysz, że FastComments jest dość dobrze zoptymalizowany i nie wymaga dużych maszyn dla samej aplikacji, aby utrzymać niskie wartości P99.

Wszystkie zadania wsadowe i cron korzystają ze strumieniowania, aby ograniczyć całkowite zużycie pamięci.

Poniższe tabele dla serwera aplikacji i bazy danych mogą pomóc przy doborze rozmiarów.

Instancje serwera aplikacji

Concurrent Users Total Cluster CPUs Total Cluster Memory
100 1 256mb
1K 2 512mb
10K 8 1gb
100K 32 8gb
1M 64 64gb

Na przykład pojedyncze jądro obsługujące około 100 wątków komentarzy na sekundę zwykle nigdy nie używa więcej niż 250mb RSS.

Instancje serwera bazy danych

Dobór rozmiaru bazy danych zależy od rozmiaru zestawu roboczego (working set), czyli ilości danych, do których uzyskujesz dostęp w danym momencie, a także od liczby równoczesnych żądań.

FastComments jest dość łagodny dla Mongo — dla gorących zapytań używa wskazówek indeksów, strumieniowych kursorów i ma limity współbieżności w różnych obszarach, aby zapobiec przeciążeniu systemów dalszego przetwarzania.

Poniżej znajduje się ogólna wskazówka dotycząca rozmiarów instancji bazy danych. Należy pamiętać, że dotyczy to na instancję, a nie łącznych zasobów w klastrze.

Concurrent Users Comments Stored CPUs Per Instance Memory Per Instance
100 1k 1 256mb
1K 5k 2 512mb
10K 100k 8 2gb
100K 500k 16 8gb
1M 5M 32 32gb

Powyższe tabele to ostrożne szacunki. Rzeczywiste wymagania mogą się różnić w zależności od Twojej konfiguracji (rozmiary stron, wolumen komentarzy itp.).

Konfiguracja Internal Link

FastComments wykorzystuje zmienne środowiskowe do konfiguracji. Poniższa lista przedstawia wszystkie obsługiwane zmienne istotne dla wdrożeń On-Prem.

Zmienna Domyślna Opis Wymagane Przykłady lub wartości
NODE_ENV Typ środowiska. Yes production, dev
MONGO_URI URI połączenia z bazą danych. Yes
MONGO_ENABLE_SSL false Aktywuje użycie SSL do połączenia z bazą danych. No true, false
MONGO_ENABLE_SSL_VALIDATE false Włącza walidację certyfikatu względem CA podczas łączenia z Mongo. No true, false
MONGO_SSL_CA Plik PEM z CA dla SSL Mongo. No /path/to/some-cert.pem
ADMIN_NOTIFICATIONS_EMAIL Adres e-mail, na który powinny trafiać ważne powiadomienia systemowe. No admin-group@bigcorp.com
IP_HASH_SALT Sól do haszowania adresów IP. Yes
SESSION_SECRET Klucz używany do podpisywania sesji. Yes
SESSION_STORE_SECRET Klucz używany do podpisywania/haszowania sesji w przechowywaniu. Musi różnić się od SESSION_SECRET. Yes
HOSTNAME Nazwa hosta, na którym jest wdrożony FastComments (panel administracyjny itp.). NIE powinna zawierać numeru portu ani protokołu. Yes example.com
HOST_ADDR Dostępny URI, pod którym wdrożony jest FastComments (panel administracyjny itp.). Yes https://example.com
EMAIL_CONFIG_PATH Ścieżka w lokalnym systemie plików do pliku konfiguracyjnego e-mail (SMTP, mapowania domen/dostawców itp.). Yes /my/config.json
EMAIL_DEFAULT_FROM_NAME Robot FastComments Nagłówek "From Name" w e-mailu. No My Company Name
EMAIL_DEFAULT_FOOTER_LOGO /images/logo-32-2020-01.png Logo w stopce e-maila. No https://exmaple.com/footer.png
EMAIL_DEFAULT_TRANSPORT Zastąpienie wartości "defaultTransport" w EMAIL_CONFIG_PATH. Przydatne przy wdrażaniu tego samego pliku konfiguracyjnego w różnych środowiskach. No myTransportName
ON_PREM_TENANT_ID ID konta na fastcomments.com. Używane do zarejestrowania klucza licencyjnego. No
ON_PREM_LICENSE_KEY Klucz licencyjny on-prem. No
GIPHY_API_KEY Klucz API Giphy. Jeśli nie jest określony, powinieneś utworzyć regułę konfiguracyjną wyłączającą wybór gifów. No
GIPHY_DEFAULT_RATING pg Używane w integracji z Giphy. Może być także nadpisane regułami dostosowania widgetu. No g, pg, pg-13, r
OPENAI_SECRET_KEY Używane do funkcji opartych na OpenAI, np. opcjonalnego wykrywania spamu opartego na GPT. No
CDN_HOST_ADDR Nazwa hosta, z którego będą pobierane zasoby. Domyślnie wartość HOSTNAME. No example.com
LARGE_FILE_HOST_ADDR Nazwa hosta, z którego pobierane są duże pliki (np. eksporty). Domyślnie wartość CDN_HOST_ADDR. No example.com
LARGE_FILE_LOCATION_TYPE local_disk Gdzie powinny być przechowywane duże pliki, takie jak eksporty. No local_disk, s3
FROM_EMAIL_HOST Nazwa hosta, z którego powinny być wysyłane e-maile. No example.com
COOKIE_ID fastcomments.sid Nazwa ciasteczka fastcomments. No
COOKIE_HOSTNAME .fastcomments.com Wartość pola "hostname" w ciasteczku. Zalecane poprzedzenie kropką. No .example.com
S3_ACCESS_KEY Używane do przesyłania plików użytkowników, avatarów itp. Domyślnie używany lokalny system plików, jeśli niezdefiniowane. No
S3_SECRET_KEY Używane do przesyłania plików użytkowników, avatarów itp. No
S3_REGION Używane do przesyłania plików użytkowników, avatarów itp. No
S3_BUCKET Używane do przesyłania plików użytkowników, avatarów itp. No
S3_HOST Używane do przesyłania plików użytkowników, avatarów itp. No
CACHE_DIR Lokalizacja do przechowywania opcjonalnego cache offline, na wypadek gdy DB jest niedostępna. Okresowo odświeżane z 100 najbardziej popularnymi wątkami komentarzy. No
BACKUP_DIR Lokalizacja do przechowywania danych na wypadek niedostępności DB. Jeśli komentarz zostanie przesłany, gdy DB jest niedostępna, trafia tutaj i jest przetwarzany później. No

Zauważ, że wszystkie zmienne związane z domenami używają końcówek _HOST lub _ADDR. Różnica to:

  • _HOST: example.com
  • _ADDR: https://example.com

Ścieżka w EMAIL_CONFIG_PATH powinna wskazywać na plik JSON o następującym przykładowym formacie:

Konfiguracja e-mail
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

W powyższym przykładzie definiujemy domyślny transport e-mail SMTP o nazwie mailgun. Definiujemy także specjalny transport, którego używamy konkretnie dla e-maili @yahoo.com. W niektórych scenariuszach pożądane jest użycie określonego dostawcy lub adresu IP nadawcy dla danej domeny w celu dostrojenia dostarczalności. To jest opcjonalne.

DocumentDB

Podczas łączenia z DocumentDB warto ustawić MONGO_ENABLE_SSL=true MONGO_SSL_CA=/some/path.pem, aby być zgodnym z domyślnymi ustawieniami.

Przestoje bazy danych i tryb konserwacji Internal Link

FastComments obsługuje automatyczny tryb konserwacji. Jeśli baza danych przestanie działać, może nadal serwować popularne wątki komentarzy.

Dodatkowo, w trybie konserwacji wszystkie komentarze są zapisywane w BACKUP_DIR. Zostaną one przetworzone (sprawdzone pod kątem spamu itd.) i zapisane, gdy system wróci online.

Robi to, co godzinę, określając 100 najpopularniejszych wątków komentarzy i buforując ich zawartość na dysku. Określanie 100 najlepszych wątków jest już wykonywane na podstawie wstępnie obliczonego stanu, więc nie jest to ciężkie zadanie periodyczne.

To jest całkowicie opcjonalne i włączane tylko jeśli ustawione są CACHE_DIR i BACKUP_DIR. Oczywiście sprawia to, że węzły aplikacji stają się stanowe, jednak jest to stan, który może zostać utracony w dowolnym momencie bez powodowania niewłaściwego działania aplikacji.

Należy pamiętać, że w trybie konserwacji nie da się przeprowadzić właściwej autoryzacji wątków komentarzy, dlatego okresowo tworzony jest backup tylko tych wątków, które można bezpiecznie uznać za publiczne.

W trybie konserwacji wiele funkcji jest niedostępnych.

Kod widżetu Internal Link


Przykłady kodu front-end i biblioteki dla On-Prem są takie same jak w produkcie SaaS. Jednak musisz określić apiHost oraz poprawną ścieżkę do skryptu:

Kod komentarzy dla 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 // ... można również przekazać ładunek SSO itp.
9 });
10</script>
11

Powyższy przykład jest bardzo prosty. Możemy też użyć oficjalnych bibliotek dla React, Angular, Vue, Svelte itp.


API Internal Link

Do API można uzyskać dostęp tak jak do zwykłego produktu SaaS: należy zalogować się do panelu On-Prem, utworzyć klucze API i użyć ich do uzyskania dostępu do API.

Punkty końcowe API są takie same on-prem, jak w produkcie SaaS.

Wiele domen Internal Link

Twoja instalacja On-Prem FastComments może obsługiwać komentarze dla wielu wewnętrznych domen, na przykład app.mycorp.org i hr.mycorp.org. Możesz konfigurować je oddzielnie, ale hostować je na jednej instalacji On-Prem, tworząc oddzielne Customization Rules, aby określić ich indywidualne zachowania.

Bezpieczeństwo Internal Link

Domyślnie FastComments zakłada, że wątki komentarzy są publiczne. Aby dodać warstwę zabezpieczeń, zaleca się utworzenie reguły dostosowania z Requires SSO opcją zaznaczoną. Spowoduje to, że wszystkie powiązane z komentarzami punkty końcowe będą wymagać uwierzytelnienia SSO.


Podsumowanie

Dokumentacja On Prem dobiegła końca. Daj nam znać, jakie masz dalsze uwagi lub pytania poniżej - możesz również skontaktować się z nami przez Stronę pomocy.