
שפה 🇮🇱 עברית
רקע
התחלה
פריסה
ארכיטקטורה
התקנה ואינטגרציה
טיפים לאבטחה
אירוח FastComments באתר הלקוח
FastComments מספקת מספר פתרונות לפריסה. הנפוץ ביותר הוא שבו אנחנו מארחים את היישום בעבורך.
עם זאת, אנו מבינים שלקוחות מסוימים אינם יכולים לאחסן את המידע שלהם בענן, ודורשים לארח את כל הנתונים שלהם באתר הלקוח.
תיעוד זה מכסה את מקרה השימוש הזה.
מה נכלל 
FastComments On Prem מאפשר לך לפרוס את פתרון התגובות החיות שלנו, כולל כל כלי המודרציה והניהול, על החומרה שלך.
זה אומר שיש לך שליטה על הנתונים שלך, ומערכת התגובות יכולה להיות מוגבלת ל-LAN המקומי שלך או לרשת התאגידית.
מאיפה להתחיל 
כדי להתחיל לפרוס את FastComments On Prem, פנו אלינו.
לאחר ההגדרה, תוכלו תמיד להוריד את תמונת ה-Docker העדכנית ביותר מעמוד הרישיונות.
אינסטנציות 
רכיבים נדרשים
עבור On-Prem, FastComments מורכב רק משרת אפליקציה וממאגר נתונים. פישרנו את הפריסה כך שהאפליקציה יכולה לשרת את כל התעבורה ישירות מבלי להוסיף רכיבים אחרים.
שרת האפליקציה מסופק בתמונת Docker וניתן לפרוס אותו עם כל פתרון ניהול קונטיינרים.
ממאגר הנתונים, MongoDB, ניתן להפעיל בעצמכם או לארח אצל ספק אחר כמו AWS DocumentDB או MongoDB Atlas.
FastComments נבדק כרגע עם MongoDB 7, אולם אנו שואפים להתאים גם ל-DocumentDB כדי להקל על הפריסה.
מידות מופעים
תגלו ש-FastComments מותאם די טוב ואינו דורש מכונות גדולות לאפליקציה עצמה כדי לשמור על P99s נמוכים.
כל עבודות ה-batch וה-cron משתמשות בזרימה (streaming) כדי להגביל את השימוש הכולל בזיכרון.
הטבלאות שלמטה עבור שרת האפליקציה ומאגר הנתונים יכולות לסייע בקביעת גודל המופעים.
מופעי שרת אפליקציה
| Concurrent Users | Total Cluster CPUs | Total Cluster Memory |
|---|---|---|
| 100 | 1 | 256mb |
| 1K | 2 | 512mb |
| 10K | 8 | 1gb |
| 100K | 32 | 8gb |
| 1M | 64 | 64gb |
למשל, ליבה בודדת שמשרתת כ-100 שרשורים של תגובות בשנייה בדרך כלל לעולם לא צורכת יותר מ-250mb RSS.
מופעי שרת מאגר נתונים
גיזום (sizing) של מאגר הנתונים תלוי בגודל ה-working set, שהוא כמות הנתונים שאתם ניגשים אליה בנקודת זמן נתונה, וכן בבקשות בו-זמנית.
FastComments יחסית ידידותי ל-Mongo, בכך שעבור השאילתות החמות הוא משתמש ברמזי אינדקס, ב-cursors זורמים, ויש לו הגבלות תחרותיות באזורים שונים כדי למנוע עומס יתר על מערכות משניות.
להלן קו מנחה כללי לגבי מידות מופעי מאגר הנתונים. שים לב שזה לכל מופע, לא משאבים כוללים באשכול.
| 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 |
הטבלאות שלעיל הן הערכות שמרניות. ייתכן שתגלו שהדרישות בפועל שונות בהתאם לתצורה הספציפית שלכם (גדלי עמודים, נפח תגובות וכו').
הגדרות 
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 | קובץ PEM של ה-CA ל-SSL של Mongo. | לא | /path/to/some-cert.pem | |
| ADMIN_NOTIFICATIONS_EMAIL | דוא״ל שאליו יישלחו התראות מערכת חשובות. | לא | admin-group@bigcorp.com | |
| IP_HASH_SALT | מלח (salt) להאשטת כתובות IP. | כן | ||
| SESSION_SECRET | המפתח המשמש לחתימת סשנים. | כן | ||
| SESSION_STORE_SECRET | המפתח המשמש לחתימה/האשת (hash) של סשנים באחסון. חייב להיות שונה מ-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 | כותרת "שם השולח" בהודעות דוא״ל. | לא | 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 | מפתח רישיון לפריסה מקומית. | לא | ||
| GIPHY_API_KEY | מפתח API ל-Giphy. אם לא צויין, יש ליצור כלל בקונפיג שיבטל את בורר ה-GIF. | לא | ||
| GIPHY_DEFAULT_RATING | pg | משמש באינטגרציה עם Giphy. ניתן גם להחליף באמצעות חוקי התאמת וידג'ט. | לא | g, pg, pg-13, r |
| OPENAI_SECRET_KEY | משמש לתכונות מבוססות OpenAI כגון זיהוי ספאם אופציונלי מבוסס GPT. | לא | ||
| CDN_HOST_ADDR | שם המארח ממנו יתאחזרו נכסים (assets). ברירת המחדל היא הערך של 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 | אזור (region) לשימוש בהעלאות S3. | לא | ||
| S3_BUCKET | דלי (bucket) לשימוש בהעלאות קבצים. | לא | ||
| S3_HOST | ה-host של שירות S3. | לא | ||
| CACHE_DIR | מיקום לשמירת מטמון אופציונלי לא מקוון, לשימוש כאשר DB אינו זמין. מתרענן תקופתית עם 100 השרשורים המובילים של תגובות. | לא | ||
| BACKUP_DIR | מיקום לאחסון נתונים לשימוש כאשר DB אינו זמין. אם תגובה נשלחת כשה-DB אינו זמין היא תישמר כאן ותטופל מאוחר יותר. | לא |
שים לב שכל המשתנים הקשורים לדומיין משתמשים בסיומת _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 שלנו.
זה יכול להיות שימושי לראות מדוע המערכת תקועה או תחת עומס. אם, למשל, SRE רוצה לראות מדוע המערכת חווה עומס גבוה על ה‑CPU, הם יכולים לבדוק נקודת קצה זו כדי לקבל את השם של ה‑cron שמתנהג בצורה לא תקינה.
קוד הווידג'ט 
קטעי קוד וספריות בצד הלקוח עבור On-Prem זהים לאלו של מוצר ה-SaaS. עם זאת, עליך לציין את apiHost ואת נתיב הסקריפט הנכון:

זו דוגמה פשוטה מאוד. ניתן גם להשתמש בספריות רשמיות (React, Angular, Vue, Svelte וכו').
ממשק API 
ניתן לגשת ל-API בדיוק כמו למוצר ה-SaaS הרגיל בכך שתיכנסו ללוח המחוונים של On-Prem כדי ליצור מפתחות API ולהשתמש במפתחות אלה כדי לגשת ל-API. ה-API נקודות הקצה זהות ב-on-prem כפי שהן עבור מוצר ה-SaaS.
לסיכום
הגעת לסוף התיעוד של On Prem. הודיעו לנו על הערות או שאלות נוספות למטה - ניתן גם לפנות אלינו דרך הדף התמיכה.